原生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     }

 

原文地址:https://www.cnblogs.com/Mr-Dawei/p/7455324.html