• 简单窗口与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+"
    平台编号:"+platNumber+"
    批准年月:"+date+"
    批准文号:"+number+"
    技术领域:"+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))+" ");
            }
        }
    }
  • 相关阅读:
    前端带队之漫谈
    css3之currentColor
    安装及升级node
    谈JavaScript代码封装
    再玩儿一次——深入理解闭包
    【学习笔记】ES6标准入门
    【学习笔记】移动Web手册(PPK力作)
    使用webstorm操作git
    使用webstorm调试node程序
    前端代理nproxy
  • 原文地址:https://www.cnblogs.com/z12568/p/9800044.html
Copyright © 2020-2023  润新知