• 原生Jdbc操作Mysql数据库开发步骤


    原生Jdbc操作Mysql数据库开发步骤

    原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作。

    下面是开发步骤:

           1、导入数据库驱动包

                  -mysql-connector-java-5.1.7-bin.jar

           2、准备参数

                  -url ()   链接url格式:(jdbc:mysql://主机名:端口号/数据库名字)

                                通常我们会在链接后添加编码方式: useUnicode=true&characterEncoding=UTF-8

                  -username 数据库访问的用户名

                  -password 数据库访问密码

                  -driver com.mysql.jdbc.Driver  内容是数据库驱动包中Driver类的全类名

           3、加载数据库驱动   (使用反射的方式)

                  Class.forName(driver)  

           4、通过数据库驱动获取数据库链接

                  Connection conn = DriverManager.getConnection(url,username,passworrd);

           5、编写sql语句

                  增加 -  INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

                  删除 -  DELETE FROM 表名称 WHERE 列名称 = 值

                  更新 -  UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

                  查询 -  SELECT 列名称 FROM 表名

      6、通过链接获取执行对象

             包含Statement 和 PrepareStatement ,由于PrepareStatement是预编译执行,且效率高、还能防止sql注入,因此在这只使用PrepareStatement讲解。

        prepareStatement = conn.prepareStatement(sql);

        若sql语句中有占位符“?”,则需要进行传入参数

        prepareStatement.setObject(i,object);   //其中i从1开始

      7、执行sql语句

             若为增删改操作,使用executeUpdate()方法,返回值为受影响行数,为int类型。

        int result = pStatement.executeUpdate();

             若为查询操作,使用executeQuery()方法,返回值将是一个结果集,因此需要遍历出结果集。

             ResultSet resultSet = pStatement.executeQuery();

             遍历resultSet

        while(resultSet.next()){

                 Object object = resultSet.getObject(“表单列或者列号”);

        }

      8、关闭资源和连接

          倒序关闭,先关闭resultSet,再关闭prepareStatement,再关闭conn.

      以下是原生操作的代码,以查询为例:

     1     private static final String URL = "jdbc:mysql://127.0.0.1:3306/test";
     2     private static final String USERNAME = "root";
     3     private static final String UPASSWORD = "123456";
     4     private static final String UDRIVER = "com.mysql.jdbc.Driver";
     5     
     6     public static void main(String[] args){
     7         Connection conn = null;
     8         PreparedStatement pStatement = null;
     9         ResultSet resultSet = null;
    10         /*
    11          * 编写sql语句
    12          * 假设test表中只有int类型的id varcher类型的uname两列
    13          * ? 为通配符,留作参数传入
    14          */
    15         String sql ="SELECT id,uname FROM test WHERE id > ?"; 
    16         try {
    17            //加载驱动
    18            Class.forName(UDRIVER);
    19            //获取链接
    20            conn = DriverManager.getConnection(URL, USERNAME, UPASSWORD);
    21            //获取链接执行对象
    22            pStatement = conn.prepareStatement(sql);
    23            /*
    24             * 将参数传入
    25             * 此处根据参数类型的不同选用不同的方法传入
    26             * ###其中第一个参数parameterIndex是从1开始计数##
    27             */
    28            pStatement.setInt(1, 3);
    29            //执行Sql语句
    30            resultSet = pStatement.executeQuery();
    31            //遍历结果集
    32            while(resultSet.next()){
    33                Integer id = resultSet.getInt("id");
    34                String uname = resultSet.getString("uname");
    35                System.out.println("用户ID为 : "+id+",用户名为: "+uname);
    36            }
    37         } catch (ClassNotFoundException e) {
    38            // TODO Auto-generated catch block
    39            e.printStackTrace();
    40         } catch (SQLException e) {
    41            // TODO Auto-generated catch block
    42            e.printStackTrace();
    43         } finally {
    44            //逆序关闭资源
    45            try {
    46                if(resultSet!=null){
    47                    resultSet.close();
    48                }
    49                if(pStatement!=null){
    50                    pStatement.close();
    51                }
    52                if(conn!=null){
    53                    conn.close();
    54                }
    55            } catch (SQLException e) {
    56                // TODO Auto-generated catch block
    57                e.printStackTrace();
    58            }
    59         }
    60     }

     

  • 相关阅读:
    通过USB转TTL串口下载stm32程序
    实验一:基于STM32F1的流水灯实验(库函数)
    opencv 常用头文件介绍
    OpenCV 1.0在VC6下安装与配置(附测试程序)
    在Angularjs使用中遇到的那些坑
    js和ts关于遍历的几个小总结
    angularjs的启动方式
    关于跨域和如何解决跨域问题的小结
    TypeScript(入门)
    截取字符串部分汇总
  • 原文地址:https://www.cnblogs.com/Mr-Dawei/p/7455324.html
Copyright © 2020-2023  润新知