本内容为本人的学习记录,内容不一定准确,如有错误,请指出。

在进行实习操作之前请确定已经下载并导入jar包。

JDBC有重要的编程六步

1.. 注册驱动,作用:告知Java程序,连接的数据库品牌
2. 获取连接
3. 获取数据库操作对象
4. 执行sql语句
5. 处理查询结果
6. 释放资源(使用完成一定要关闭资源)

注册驱动:

Driver driver = new com.mysql.cj.jdbc.Driver();//注意第一个Driver是sql包下的,和第二个不相同
            DriverManager.registerDriver(driver);
    

获取连接

 String password="";//获取密码
 String user="root";//获取用户名
 String url="jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC";
//jdbc:mysql://IP地址//端口号?severTimezone=UTC 设置时区在最后面加上,ip地址可以写localhost或者本机IP。
            Connection conn=DriverManager.getConnection(url,user,password);//获取连接
            System.out.println(conn);//测试是否连接成功

获取数据操作对象

 Statement stme=conn.createStatement();

执行sql语句

String sql="insert into stu(ID,name) values(1001,'张三');";
int i = stme.executeUpdate(sql);//执行DML语句,返回值是影响的数据条数
 System.out.println(i);//返回影响了几条数据

处理查询结果

/*执行的sqk语句是插入语句,所以无需操作*/

关闭释放资源

finally {

            if (stme!=null){
                try {
                    stme.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            try {
                if (conn!=null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

JDBC查询

如果要执行查询语句,那么在第四步执行查询语句换成:

   //rs.getString()中可以写入列数,从1开始,也可以写入要输入列数的名字。
String sql="SELECT * FROM stu";
  ResultSet rs=stat.executeQuery(sql);
while (rs.next()){
                System.out.print(rs.getString("id"));
                System.out.print(rs.getString("name"));
                System.out.print(rs.getString("age"));
                }

_

将jdbc信息配置在文件中

在src下创建jbdc.properties,里面存放配置信息

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/data?useSSL=false&serverTimezone=UTC
user=root
password=15815958785

读取配置信息

  ResourceBundle rb= ResourceBundle.getBundle("jbdc");

        String driver = rb.getString("driver");
        String url = rb.getString("url");
        String user = rb.getString("user");
        String password = rb.getString("password");

Sql注入

如果我们在输入密码时加上 username = 1'or'1'='1 那么它会改变sql'语句原本的意思,为了防止这种情况,我们需要进行防护。

如果解决:

只要用户提供的信息不参与sql语句的编译过程
在conn连接下面中将jdbc的提交改为手动提交。

conn.setAutoCommit(false);

然后在最下面进行提交

 conn.commit();//提交