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.println(sql);
PreparedStatement statement = 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
// URL resource = JDBCUitl.class.getClassLoader().getResource("db.properties");
// System.out.println(resource);
// 保证bin文件下要有这个文件 需要把配置文件放到工程目录的src文件夹下
// 这个文件会被系统编译到bin文件夹下
InputStream inputStream = JDBCUitls.class.getClassLoader().getResourceAsStream("db.properties");
properties.load(inputStream);
System.out.println(properties.getProperty("driverClass"));
System.out.println(properties.getProperty("url"));
System.out.println(properties.getProperty("username"));
System.out.println(properties.getProperty("paassword"));