本内容为本人的学习记录,内容不一定准确,如有错误,请指出。
在进行实习操作之前请确定已经下载并导入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();//提交