学习笔记:JDBC与数据库
集训的有关总结
连接数据库(MySQL)的步骤:
-
导入jar包(可以去官网下)
复制mysql-connector-java-5.1.37-bin.jar到项目libs目录下
右键–>Add As Library -
注册驱动
-
获取数据库连接对象Connection
-
定义sql
-
获取执行sql语句的对象Statement
-
执行sql,接收返回的结果
-
处理结果
-
释放资源
下面以简单的例子介绍:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/**1. JDBC连接数据库2. @author MIAO3. @date 2020/5/11*/
public class LoginJDBC {public static void main(String[] args) throws Exception {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1","root","root");System.out.println(conn);//3.定义sql语句String sql = "insert into score(sid,sname,sage) values(99,'李未来',18)";//4.获取执行sql语句的对象StatementStatement statement = conn.createStatement();//5.执行sql语句,接收返回结果int i = statement.executeUpdate(sql);//6.处理结果System.out.println("受影响行数:"+i);//7.释放资源statement.close();conn.close();}
}
关于对象的详解:
- DriverManager:驱动管理对象
- 注册驱动:告诉程序应该使用哪一个数据库驱动jar包
Class.forName("com.mysql.jdbc.Driver");
- 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1","root","root");
- url="jdbc:mysql://localhost:3306/test1"指明数据库的连接路径
- 语法:(jdbc:mysql://ip地址(域名):端口号(这里MySQL默认的端口号是3306)/数据库名称(这里我创建的数据库名称为test1),“user用户名”,“password数据库密码”);
- Connection:数据库连接对象
获取执行sql的对象
Statement statement = conn.createStatement();
- Statement:执行sql的对象
- executeUpdate()方法:执行DML(insert,update,delete)和DDL(create,alter,drop)语句
- 返回值:影响的行数,可以通过这个行数判断所写的sql语句是否执行,返回值>0执行成功,返回值<0执行失败
- ResultSet:结果集对象,封装查询结果
- boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回 false,如果不是则返回 true
- 使用步骤:
游标向下移动一行
判断是否有数据
获取数据
- PreparedStatement:执行sql对象
- SQL 注入问题:在拼接 sql 时,有一些 sql 的特殊关键字参与字符串的>拼接。会造成安全性问题
- 输入用户随便,输入密码: a’ or ‘a’ = 'a
- sql:select * from user where username = ‘fhdsjkf’ and password = ‘a’ or ‘a’ = ‘a’
- 解决 sql 注入问题:使用 PreparedStatement 对象来解决
- 预编译的 SQL:参数使用 ? 作为占位符
- 注意:sql 的参数使用?作为占位符。
如: select * from user where username = ? and password = ?;