mysql-connector-java-5.1.38百度云下载链接:https://pan.baidu.com/s/1bOEd6_mecjPxtSZMZgVyNA
提取码:hg63
JDBC(Java DataBase Connection):是一种用于执行sql语句的JavaAPI(标准规范)
Java提供的访问数据库规范就是JDBC
使用前提:需要连接驱动jar(驱动jar是由生产厂商开发)
开发者通过Java代码实现与数据库进行通信,是因为有数据库连接驱动来规定通信的数据格式
使用JDBC开发的步骤:
1.(注册)加载驱动:通过反射加载
4.执行语句:通过平台发送执行
5.处理结果:执行语句返回值,更新(增,删,改)操作返回int值表示受影响行数,查询操作返回ResultSet(结果集,类似数据库表)
6.释放资源:通过close方法
开发准备:
1.下载驱动jar
2.将jar添加到java项目中
在项目上鼠标右键:Build Path->configure build path
String url ="jdbc:MysqL://localhost:3306/mydb";
String username = "root";
String password = "MysqLpass";
//加载驱动
/*
*
java.lang.classNotFoundException:表示驱动类没有找到
*/
Class.forName("com.MysqL.jdbc.Driver");
//获取连接
/*
* 需要三个参数:
数据库连接地址:jdbc:MysqL://ip或者hostname:端口号/数据库名
*--String url ="jdbc:MysqL://localhost:3306/mydb";
* 地址三部分组成:
* 第一部分jdbc,固定的
* 第二部分:数据库厂商名称
* 第三部分:由数据库厂商规定,由数据库IP地址、端口号、数据库名组成
String username = "root";数据库用户名
*String password = "MysqLpass";数据库密码
*/
Connection con = DriverManager.getConnection(url, username, password);
//获取执行平台
/*
* 常用方法:
* int executeUpdate(String sql):执行inset,update,delete语句
* ResultSet executeQuery(String sql):执行select语句
*/
Statement sta = con.createStatement();
//执行语句
// sta.executeUpdate(sql)//执行更新
String sql = "select * from tb_user";
ResultSet rs = sta.executeQuery(sql);//执行查询
//处理结果
/*
* 处理结果集:
* 结果集实际就是一张二维表,通过next()方式向下移动指针指向一行数据
* 然后通过调用getXXX(列序号或列名),XXX表示数据库中当前列的数据类型,列序号从1开始的整数,列名是字符串
* 注意:操作结果集之前指针在表上,没有执行第一行数据,只有调用了一次next后指针才指向的第一行
*/
while(rs.next()) {
//通过getXXX返回获取每一列数据
int id = rs.getInt(1);
String name = rs.getString("name");
int age = rs.getInt(3);
System.out.println(id+" "+name + " " + age);
}
//释放资源
/*
* 和IO流一样,使用后的对象都需要关闭,关闭顺序是:先创建获取的后关闭,后创建获取的先关闭
*/
rs.close();
sta.close();
con.close();
sql注入攻击:字符串语句中需要添加变量参数(字符串值拼接问题)
String uname = "任意字符 or 1=1
– ";
String sql = “select * from tb_user
where username=’”+uname+"’ and password=‘zs123’"
在通过执行平台执行sql语句时,可以随便输入用户名和密码都能登录成功
解决办法:使用预处理对象PrepareStatement
PrepareStatement:使用方式:
错误写法:select * from tb_user where username=’?’ and password=’?’
正确写法:
常用方法:
intexecuteUpdate();----执行insert,update,delete语句
ResultSet ececuteQuery();----执行select语句
使用预处理对象执行语句步骤:
1.(注册)加载驱动
2.获取连接
3.获取预处理对象:获取时需要指明sql语句,在其中通过?进行占位。
5.执行语句
6.处理结果:执行语句返回值,更新(增,删,改)操作返回int值表示受影响行数,查询操作返回ResultSet(结果集,类似数据库表)
7.释放资源:通过close方法
Statement和PreparedStatement的区别:
-
都是执行平台,都可以进行增,删,查,改
-
在Statement平台的sql设置语句参数时只能通过字符串拼接(会引起sql语句注入攻击),而PreparedStatement平台可以通过占位符来避免注入攻击
-
使用Statement执行语句效率比PreparedStatement高
实际开发中一般都直接使用PreparedStatement对象
更新操作:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。