第一次接触JDBC,不知道JDBC是什么
JDBC介绍
- JDBC :JAVA Data Base Connection Java链接数据库
- JDBC:实现java和数据库进行连接
java为此提供了一套规范,并自行维护
各数据库厂商想要和java进行连接就定义实现类俗称驱动,并且自行维护
JDBC快速入门
- 导入数据库的驱动的JAR包,并进行依赖
- 加载驱动的JAR包
- 获取链接对象
- 获取操作对象
- 开始操作
- 释放资源
//导入数据库的驱动并进行依赖
// 加载驱动的jar包
class.forName("com.mysql.jdbc.Driver");
//获取链接对象,先和哪个数据库进行连接
String url="jdbc:mysql://location:3306/myssql";
String username="root";
String password="123456";
Connection conn=DriverManager.getConnection(url,username,password);
//获取操作对象
Statement statement = conn.createStatement();
//执行sqll语句 先写出sql的增删改,在进行执行
String sql="insert into users values('wangwu','123456')";
int i = statement.executeUpdate(sql);
if(i>0){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}
//释放资源
conn.close();
statement.close();
几个类的介绍
Class.forName(“com.mysql.jdbc.Driver”); 加载驱动,也可以省略不写
注册驱动是Driver里面的静态代码块在做
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException(“Can’t register driver!”);
}
}
- 类 DriverManager Java提供的 管理一组 JDBC 驱动程序的基本服务。
- 接口Connection 试图建立到给定的数据库的URL的连接.
- 接口 Statement 用于执行静态代码块SQL语句并返回它所生成结果的对象
- boolean b = statement.execute(sql);//用来执行所有的SQL语句 返回:
- 如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
- int i = statement.executeUpdate(sql);//用来执行DML语句 用来对表中数据进行增删改 返回值是影响的行数
- statement.executeQuery(sql);//用来执行DQl语句
结果集对象ResultSet
结果集对象:是我们执行了查询语句之后返回的一个查询结果对象
ResultSet 对象具有指向当前数据行的光标,最初,光标被放在第一行之前,nex将光标移到下一行;因为该方法在ResultSet对象没有下一行的时候返回的是false,所以可以在while循环语句中用它来迭代结果集
while (resultSet.next()){
//参数就是数据库中的字段序号 从1开始
//String username = resultSet.getString(1);
//int age = resultSet.getInt(2);
//通过字段名来获取字段的值
String username = resultSet.getString("username");
int age = resultSet.getInt("age");
//System.out.println(username+"==="+age);
//我们从数据库中取出了数据,就是为了要使用这些数据,那我们就要对这些数据进行封装
Student student = new Student(username, age);
list.add(student);
}
预编译操作对象 PrepareStatement
- 这个操作对象:可以在安全方面防止sql注入
- 使用步骤
- conn.prepareStatement(sql);
- sql语句中的字段的值可以用?进行占位
- 给sql语句中的?进行赋值
//SQL语句中的值 全部用 ? 问号占位
String sql=“SELECT * FROM users WHERE username=? AND PASSWORD=?”;
//获取一个预编译对象 PreparedStatement
PreparedStatement preparedStatement = conn.prepareStatement(sql);
//把SQL语句给这个预编译对象
//下来给问号赋值 参1.问号的顺序,从1开始数 参数2 问号的值
preparedStatement.setString(1,uname);
preparedStatement.setString(2,pwd);
ResultSet resultSet = preparedStatement.executeQuery(); //这里就不要再传入SQL语句