- 基本介绍:
JDBC:Java database connectity Java 通过Java语言操作数据库
JDBC的本质:sun公司制定的一个操作关系型数据库的规则,接口。各个数据厂商去实现这套接口,提供操作数据库的jar包。
需掌握的知识点:
1、jdbc的执行流程;2、什么是sql注入;3、如何避免sql注入
-
jdbc使用步骤:
1、导入驱动jar包 复制粘贴到 WEB-INF —lib add as libray
2、基本入门代码:
//1、注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
//2、获取连接
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/xmcc”, “root”, “111111”);
或者 Connection conn = DriverManager.getConnection(“jdbc:mysql:///xmcc”, “root”, “111111”);
//3、定义sql语句
String sql = “insert into user values(null,‘yoyo’,‘585’,‘男’)”;
//4、获取执行对象
Statement statement = conn.createStatement();
//5、执行sql语句
int i = statement.executeUpdate(sql);
System.out.println(i);
//6、处理结果
//7、释放资源
statement.close();
conn.close(); -
jdbc对象详解:
DriverManager:驱动管理者
功能:1)注册驱动;
2)获取连接;
getConnection ( url,user,password)
url:数据库连接路径
jdbc:mysql ://ip地址:端口号/数据库名
–如果默认连接本机的mysql 且端口号是默认的3306:jdbc:mysql :///数据库名
user:用户名
passwo:密码connection:数据库连接对象
功能:
1、获取sql的执行对象
Statement createStatement();
//预编译执行者:
PrepareStatement prepareStatement(String sql);
2、管理事务Statement:执行sql的对象
1、执行sql:
executeUpdate():执行DML(insert,update,delete)、DDL(create、alter、drop)语句
executeQuery():执行DQL
execute():执行所有sqlResultSet:结果集对象,封装的是查询的结果
Boolean :next():判断是否还有下一个,如果有就往下移动寻找
getXxx():获取结果集中的值
可以通过index从1开始
可以通过列名
sql注入:在拼接sql语句的时候,有一些sql特殊的关键字 参与了字符串的拼接,会照成安全问题
PrepareStatement:
1、在编写sql的时候不要直接拼接,而是采用占位符的方式
2、占位符:?
---获取数据库中的数据---
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xmcc", "root", "111111");
//3、定义sql语句
String sql = "select * from user";
//4、获取执行对象
Statement statement = conn.createStatement();
//5、执行sql语句
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
根据列数
// String _id = resultSet.getString(1);
// String username = resultSet.getString(2);
// String password = resultSet.getString(3);
// String gender = resultSet.getString(4);
根据列名
String _id = resultSet.getString("id");
String username = resultSet.getString("username");
String password = resultSet.getString("password");
String gender = resultSet.getString("gender");
System.out.println(_id+"_"+username+"-"+password+"-"+gender);
}
//6、处理结果
//7、释放资源
statement.close();
conn.close();
//PrepareStatement——解决sql注入问题
String _name = "bobo";
String _password = "124573248734 or 'a' = 'a'";
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xmcc", "root", "111111");
//3、定义sql语句
String sql = "select * from user where username = ? and password = ?";
//4、获取执行对象
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1, _name);//设置 占位符 的值,下标从1开始
statement.setString(2, _password);
//5、执行sql语句
ResultSet resultSet = statement.executeQuery();
while(resultSet.next()){
String _id = resultSet.getString("id");
String username = resultSet.getString("username");
String password = resultSet.getString("password");
String gender = resultSet.getString("gender");
System.out.println(_id+"_"+username+"-"+password+"-"+gender);
}
//6、处理结果
//7、释放资源
statement.close();
conn.close();