JDBC技术
JDBC技术是Java提供的一套类和接口,是连接数据库的一套规范,每一个数据库产商都需要实现
JDBC操作数据库的步骤
1. 驱动注册
registerDriver(Driver driver)
加载驱动类 Driver是数据库厂商实现的 跟我们没有关系
2. 获取数据库的连接对象
getConnection(url,user,password)
这里相当于 连接上了数据库
3. 通过连接对象 获取可以sql语句的执行对象
连接对象 .createStatement() 就可以获取执行对象
4. 执行语句
通过Statement对象 来执行 sql语句
executeUPdate(sql) 返回值int
执行的是DML 和 DDL语句
executeQuery(sql) 返回ResultSet
执行DQL语句
5. 处理执行sql语句后得到结果集
6. 关闭资源 调用Close
注册驱动
注意: DriverManager.registerDriver(new Driver());
如果这么注册相当于 注册了两遍驱动
Driver源码中有静态代码块 并且代码块中已经注册了一次
该如何正确注册驱动 利用反射来注册驱动 Class.forName("com.mysql.jdbc.Driver");
获取连接对象
数据库连接地址 jdbc:mysql:// 主机的ip地址:数据库端口号/数据库的名
Connection connection = DriverManager.getConnection(url, user, password);
sql注入测试
'wanglong' or 1 = 1
在sql语句拼接的时候 可以加入一个恒等条件 让这条sql语句一定会成立
可以通过这个方式来改变你sql语句原来的意思
防止sql注入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入账号");
String user = scanner.nextLine();
System.out.println("请输入密码");
String password = scanner.nextLine();
// jdbc:mysql://localhost:3306/myjdbc01
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc01","root","123456");
// 获取预编译sql语句的对象
// 只用占位符
String sql = "select * from users where username = ? and password =?";
System.out.printtln(sql);
PreparedStatement ststement = connection.prepareStatement(sql);
// 设置占位符的值
// 参数一 问号的索引 从1开始
// 就是替换 ? 的值
statement.setObject(1, user);
statement.setObject(2, password);
// 执行sql语句
ResultSet resultSet = statement.executeQuery();
// 处理结果集
while(resultSet.next()) {
System.out.println(resultSet.getString("username")+" "+resultSet.getShort("password"));
}
connection.close();
statement.close();
resultSet.close();
如何获取bin文件下的配置文件路径并取出配置文件中的内容
// 获取bin文件夹的路径classpath
// 保证bin文件下要有这个文件 需要把配置文件放到工程目录的src文件夹下
// 这个文件会被系统编译到bin文件夹下