简单窗口与hbase数据库相连
package shangke; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import shangke.ExampleForHbase; import javax.swing.*; public class test extends JFrame { //控件 JLabel jb1 = new JLabel(); JTextField platName = new JTextField(15); JLabel jb2 = new JLabel(); JTextField platNumber = new JTextField(15); JLabel jb3=new JLabel(); JTextField date = new JTextField(15); JLabel jb4=new JLabel(); JTextField number = new JTextField(15); JLabel jb5=new JLabel(); JTextField tec = new JTextField(15); //定义 FlowLayout flow = new FlowLayout(); JTextArea jt1 = new JTextArea(); JButton button = new JButton(); JButton button1 = new JButton(); JButton button2 = new JButton(); JButton button3 = new JButton(); public test() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit()throws Exception { setSize(new Dimension(260,200)); getContentPane().setLayout(flow); jb1.setText("平台名称"); platName.setText(""); jb2.setText("平台编号"); platNumber.setText(""); jb3.setText("批准年月"); date.setText(""); jb4.setText("批准文号"); number.setText(""); jb5.setText("技术领域"); tec.setText(""); jt1.setText(""); button.setText("插入"); button1.setText("删除"); button2.setText("修改"); button3.setText("查询"); button.addActionListener(new test_jButton1_actionAdapter(this)); button1.addActionListener(new test_jButton2_actionAdapter(this)); button2.addActionListener(new test_jButton3_actionAdapter(this)); button3.addActionListener(new test_jButton4_actionAdapter(this)); this.getContentPane().add(jb1); this.getContentPane().add(platName); this.getContentPane().add(jb2); this.getContentPane().add(platNumber); this.getContentPane().add(jb3); this.getContentPane().add(date); this.getContentPane().add(jb4); this.getContentPane().add(number); this.getContentPane().add(jb5); this.getContentPane().add(tec); this.getContentPane().add(button); this.getContentPane().add(button1); this.getContentPane().add(button2); this.getContentPane().add(button3); } public static void main(String[] args) { test test=new test(); test.setVisible(true); } } class test_jButton1_actionAdapter implements ActionListener { private test adaptee; test_jButton1_actionAdapter(test adaptee) { this.adaptee=adaptee; } public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e2) { e2.printStackTrace(); } String platName=adaptee.platName.getText(); String platNumber=adaptee.platNumber.getText(); //adaptee.jt1.setText("您的用户名是:"+username+"您的输入密码是:"+String.valueOf(pwd)); String date=adaptee.date.getText(); String number=adaptee.number.getText(); String tec=adaptee.tec.getText(); try { ExampleForHbase.insertRow("Test", "1", "platName", "", platName); ExampleForHbase.insertRow("Test", "1", "platNumber", "", platNumber); ExampleForHbase.insertRow("Test", "1", "date", "", date); ExampleForHbase.insertRow("Test", "1", "number", "", number); ExampleForHbase.insertRow("Test", "1", "tec", "", tec); JOptionPane.showMessageDialog(adaptee,"插入成功"); } catch (IOException e) { e.printStackTrace(); } } }); } } //delete class test_jButton2_actionAdapter implements ActionListener { private test adaptee; test_jButton2_actionAdapter(test adaptee) { this.adaptee=adaptee; } public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e2) { e2.printStackTrace(); } String str=JOptionPane.showInputDialog("请输入要删除的平台编号"); try { ExampleForHbase.deleteRow("Test", "1", "", ""); JOptionPane.showMessageDialog(adaptee,"删除成功"); } catch (IOException e) { e.printStackTrace(); } } }); } } //update class test_jButton3_actionAdapter implements ActionListener { private test adaptee; test_jButton3_actionAdapter(test adaptee) { this.adaptee=adaptee; } public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e2) { e2.printStackTrace(); } String str=JOptionPane.showInputDialog("请输入要修改的平台编号"); try { if(ExampleForHbase.getData("Test", "1", "platName", "")!=null) { ExampleForHbase.deleteRow("Test", "1", "", ""); String str1=JOptionPane.showInputDialog("请输入要修改的平台编号"); String str2=JOptionPane.showInputDialog("请输入要修改的平台名称"); String str3=JOptionPane.showInputDialog("请输入要修改的批准年月"); String str4=JOptionPane.showInputDialog("请输入要修改的批准文号"); String str5=JOptionPane.showInputDialog("请输入要修改的技术领域"); ExampleForHbase.insertRow("Test", "1", "platName", "", str1); ExampleForHbase.insertRow("Test", "1", "platNumber", "", str2); ExampleForHbase.insertRow("Test", "1", "date", "", str3); ExampleForHbase.insertRow("Test", "1", "number", "", str4); ExampleForHbase.insertRow("Test", "1", "tec", "", str5); JOptionPane.showMessageDialog(adaptee,"修改成功"); } else { JOptionPane.showMessageDialog(adaptee,"所要修改的不存在"); } } catch (IOException e) { e.printStackTrace(); } } }); } } //select class test_jButton4_actionAdapter implements ActionListener { private test adaptee; test_jButton4_actionAdapter(test adaptee) { this.adaptee=adaptee; } public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e2) { e2.printStackTrace(); } try { String str=JOptionPane.showInputDialog("请输入要查询的平台编号"); String platName=ExampleForHbase.getData("Test", "1", "platName", ""); String platNumber=ExampleForHbase.getData("Test", "1", "platNumber", ""); String date=ExampleForHbase.getData("Test", "1", "date", ""); String number=ExampleForHbase.getData("Test", "1", "number", ""); String tec=ExampleForHbase.getData("Test", "1", "tec", ""); if(platName==null) { JOptionPane.showMessageDialog(adaptee,"查询为空"); } else { JOptionPane.showMessageDialog(adaptee,"平台名称:"+platName+"\n平台编号:"+platNumber+"\n批准年月:"+date+"\n批准文号:"+number+"\n技术领域:"+tec); } } catch (IOException e) { e.printStackTrace(); } } }); } }
package shangke; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import java.io.IOException; public class ExampleForHbase{ public static Configuration configuration; public static Connection connection; public static Admin admin; //主函数中的语句请逐句执行,只需删除其前的//即可,如:执行insertRow时请将其他语句注释 public static void main(String[] args)throws IOException{ //创建一个表,表名为Score,列族为sname,course //createTable("Test",new String[]{"platName","platNumber","date","number","tec"}); //在Score表中插入一条数据,其行键为95001,sname为Mary(因为sname列族下没有子列所以第四个参数为空) //等价命令:put \'Score\',\'95001\',\'sname\',\'Mary\' //insertRow("Score", "95001", "sname", "", "Mary"); //在Score表中插入一条数据,其行键为95001,course:Math为88(course为列族,Math为course下的子列) //等价命令:put \'Score\',\'95001\',\'score:Math\',\'88\' //insertRow("Score", "95001", "course", "Math", "88"); //在Score表中插入一条数据,其行键为95001,course:English为85(course为列族,English为course下的子列) //等价命令:put \'Score\',\'95001\',\'score:English\',\'85\' //insertRow("Score", "95001", "course", "English", "85"); //1、删除Score表中指定列数据,其行键为95001,列族为course,列为Math //执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码取消注释注释,将删除制定列族的代码注释 //等价命令:delete \'Score\',\'95001\',\'score:Math\' //deleteRow("Score", "95001", "course", "Math"); //2、删除Score表中指定列族数据,其行键为95001,列族为course(95001的Math和English的值都会被删除) //执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码注释,将删除制定列族的代码取消注释 //等价命令:delete \'Score\',\'95001\',\'score\' //deleteRow("Score", "95001", "course", ""); //3、删除Score表中指定行数据,其行键为95001 //执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码注释,以及将删除制定列族的代码注释 //等价命令:deleteall \'Score\',\'95001\' //deleteRow("Score", "95001", "", ""); //查询Score表中,行键为95001,列族为course,列为Math的值 //getData("Score", "95001", "course", "Math"); //查询Score表中,行键为95001,列族为sname的值(因为sname列族下没有子列所以第四个参数为空) getData("Test", "1", "tec", ""); //删除Score表 //deleteTable("Score"); } //建立连接 public static void init(){ configuration = HBaseConfiguration.create(); configuration.set("hbase.rootdir","hdfs://192.168.180.128:9000/hbase"); try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } //关闭连接 public static void close(){ try{ if(admin != null){ admin.close(); } if(null != connection){ connection.close(); } }catch (IOException e){ e.printStackTrace(); } } /** * 建表。HBase的表中会有一个系统默认的属性作为主键,主键无需自行创建,默认为put命令操作中表名后第一个数据,因此此处无需创建id列 * @param myTableName 表名 * @param colFamily 列族名 * @throws IOException */ public static void createTable(String myTableName,String[] colFamily) throws IOException { init(); TableName tableName = TableName.valueOf(myTableName); if(admin.tableExists(tableName)){ System.out.println("talbe is exists!"); }else { HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName); for(String str:colFamily){ HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str); hTableDescriptor.addFamily(hColumnDescriptor); } admin.createTable(hTableDescriptor); System.out.println("create table success"); } close(); } /** * 删除指定表 * @param tableName 表名 * @throws IOException */ public static void deleteTable(String tableName) throws IOException { init(); TableName tn = TableName.valueOf(tableName); if (admin.tableExists(tn)) { admin.disableTable(tn); admin.deleteTable(tn); } close(); } /** * 查看已有表 * @throws IOException */ public static void listTables() throws IOException { init(); HTableDescriptor hTableDescriptors[] = admin.listTables(); for(HTableDescriptor hTableDescriptor :hTableDescriptors){ System.out.println(hTableDescriptor.getNameAsString()); } close(); } /** * 向某一行的某一列插入数据 * @param tableName 表名 * @param rowKey 行键 * @param colFamily 列族名 * @param col 列名(如果其列族下没有子列,此参数可为空) * @param val 值 * @throws IOException */ public static void insertRow(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { init(); Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes()); table.put(put); table.close(); close(); } /** * 删除数据 * @param tableName 表名 * @param rowKey 行键 * @param colFamily 列族名 * @param col 列名 * @throws IOException */ public static void deleteRow(String tableName,String rowKey,String colFamily,String col) throws IOException { init(); Table table = connection.getTable(TableName.valueOf(tableName)); Delete delete = new Delete(rowKey.getBytes()); //删除指定列族的所有数据 //delete.addFamily(colFamily.getBytes()); //删除指定列的数据 //delete.addColumn(colFamily.getBytes(), col.getBytes()); table.delete(delete); table.close(); close(); } /** * 根据行键rowkey查找数据 * @param tableName 表名 * @param rowKey 行键 * @param colFamily 列族名 * @param col 列名 * @throws IOException */ public static String getData(String tableName,String rowKey,String colFamily,String col)throws IOException{ String str = null; init(); Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(rowKey.getBytes()); get.addColumn(colFamily.getBytes(),col.getBytes()); Result result = table.get(get); showCell(result); Cell[] cells = result.rawCells(); for(Cell cell:cells) { str=new String(CellUtil.cloneValue(cell),"UTF-8"); } table.close(); close(); return str; } /** * 格式化输出 * @param result */ public static void showCell(Result result) { Cell[] cells = result.rawCells(); for(Cell cell:cells){ System.out.println(new String(CellUtil.cloneValue(cell))+" "); } } }
版权声明:本文为z12568原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。