JDBC连接的详细步骤加代码

进行JDBC连接要如下几步:
1.导入jar驱动包
2.加载驱动包

Class.forName("com.mysql.jdbc.Driver");

3.创建连接
这里用的话可以直接复制过去,改一下数据库名就可以

String url = "jdbc:mysql://127.0.0.1:3306/yb?useUnicode=true&characterEncoding=UTF-8";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);

4.传入sql语句,这里有两种方法
第一种:用上面我们创建的连接对象调用createStatement()方法,返回值是Statement 类型
在调用Statement 里的executeQuery()方法,传入sql语句,sql语句可以看我前面的文章有
这时返回值是一个ResultSet类型的set 集合

Statement stmt = conn.createStatement();
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);

ResultSet 集合里面有一个next()方法,其实就和迭代器的原理是一样的,我们调用next方法来打印从数据库返回的值
这时ResultSet 集合给了我们一个getInt()等多个get方法,来获取其中的内容代码如下:

while(rs.next()){
    System.out.println(rs.getint(1) + "-------" + "rs.getString(2)" + "---------" + "rs.getDouble(3)");
}

这种方法进行数据传输,会出现SQL注入的一个bug,因此不建议使用给方法

下面我们来看一下第二种方法:
我们使用prepareStatement()方法,它的返回值是PreparedStatement 对象,它的底层实现,解决了上面createStatement()方法会出现的SQL注入的bug,其他的就和上面的一样了,我就不说了,代码放下面
这里面的1.2.3代表的是数据库里面表字段的顺序,相当于java中数组的索引差不多,但是数组索引是从0开始,而它是从1开始,这里我们要格外注意一下;

PreparedStatement pps =  conn.prepareStatement(sql);

ResultSet rs = pps.executeQuery();

while(rs.next()) {
    System.out.println(rs.getInt(1) + "-------" + rs.getString(2) +"-------" + rs.getInt(3));
}

5.最后就是要记得关流了,上面创建几个就要关几个流。

rs.close();

pps.close();

conn.close();

下面的是全部代码,有兴趣的可以看一下

package com.jdbc.demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class JDBCDemo {

    public static void main(String[] args) throws Exception {
        // 动态加载驱动
        Class.forName("com.mysql.jdbc.Driver");

        //创建连接,这里我们连接一个名为yb的数据库
        String url = "jdbc:mysql://127.0.0.1:3306/yb?useUnicode=true&characterEncoding=UTF-8";
        //用户名和密码为数据库安装时设置的用户名密码
        String user = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url, user, password);

        //执行sql语句
        Statement stmt = conn.createStatement();


        //游标
        String sql = "select * from user";
        ResultSet rs = stmt.executeQuery(sql);
        //这里是在外部创建了一个User对象,把数据库里面的数据都封装在里面
        List<User> list = new ArrayList<User>();
        while(rs.next()){
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String money = rs.getString("money");
            String dept = rs.getString("dept");
            User u = new User(id, name, age, money, dept);
            list.add(u);
        }


        System.out.println(list);
        //这里我们传的是一个删除语句,返回的是一个Boolean值,这里我们要注意,如果成功的话返回的是false,如果失败的话则不返回值
//      String sql = "delete from user where id=1";
//      boolean rel = stmt.execute(sql);
//      System.out.println(rel);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_42800961/article/details/81229455