zoukankan      html  css  js  c++  java
  • 简单窗口与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))+" ");
            }
        }
    }
  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/z12568/p/9800044.html
Copyright © 2011-2022 走看看