JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
//1.创建好数据源
DataSource dataSource=new MysqlDataSource();
//设置数据库所在的地址
((MysqlDateSource) dataSource).setURL("jdbc:mysql:127.0.0.1:3306/java101?characterEncoding=utf8&useSSL=false");
//设置登录数据库的用户名
((MysqlDataSource) dataSource).setUser("root");
//设置登录数据库的密码
((MysqlDataSource) dataSource).setPassword("66666");
//2.让代码和数据库服务器建立连接
Connection connection=dataSource.getConnection();
DataSource内置了连接池,在频繁创建,断开连接时比DriverManager的方式更高效。
String sql="insert into students values(1,'张三')";
//需要把这个String包装成一个“语句对象”
PreparedStatement statement=connection.prepareStatement(sql);
- Statement对象:用于执行不带参数的简单SQL语句。
- PreparedStatement :用于执行带或者不带参数的SQL语句。执行速度快于Statement对象。
//SQL里面如果是insert,update,delete都使用executeUpdate方法
//SQL里面如果是select,则使用executeQuery方法。
//返回值就表示这个操作影响到了几行,就相当于在控制台输入sql之后得到的数字。
int ret=statement.executeUpdate();
System.out.println(ret);
//此时SQL已经执行完毕,然后还需要释放资源
statement.close();
connection.close();
释放资源时,要先释放statement后释放Connection(先创建后释放)
DateSource/MysqlSource用来描述数据源,描述数据库的地址,端口,数据库名,用户名,密码。
Connection表示数据库连接。
PrepareStatement通过这个对象来描述要执行的SQL。
executeUpdate/executeQuery
public class testjdbc {
public static void main(String[] args) throws SQLException {
Scanner scanner=new Scanner(System.in);
//1.创建数据源
DataSource dataSource=new MysqlDataSource();
//设置数据库所在的地址
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
//设置登录数据库的用户名
((MysqlDataSource) dataSource).setUser("root");
//设置登录数据库的密码
((MysqlDataSource) dataSource).setPassword("111111");
//2.代码和数据库服务器建立连接
Connection connection=dataSource.getConnection();
//让用户通过控制台输入一下待插入的数据
System.out.println("请输入学号: ");
int id=scanner.nextInt();
System.out.println("请输入姓名: ");
String name=scanner.next();
//3,操作数据库:
String sql="insert into student values(?,?)";
PreparedStatement statement=connection.prepareStatement(sql);
//进行替换操作
statement.setInt(1,id);
statement.setString(2,name);
System.out.println("statement: "+statement);
//4执行SQL
//返回值就表示这个操作影响到了几行,就相当于在控制台输入sql之后得到的数字。
int ret=statement.executeUpdate();
System.out.println(ret);
//5释放资源
statement.close();
connection.close();
}
}
public static void main(String[] args) throws SQLException {
DataSource dataSource=new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("111111");
//2建立连接
Connection connection=dataSource.getConnection();
//3用户输入id
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个要删除的id");
int id=scanner.nextInt();
//4拼装SQL语句
String sql="delete from student where id=?";
PreparedStatement statement=connection.prepareStatement(sql);
statement.setInt(1,id);
//5.执行sql
int ret=statement.executeUpdate();
System.out.println("ret="+ret);
//6.释放资源
statement.close();
connection.close();
}
public static void main(String[] args) throws SQLException {
//创建数据源
DataSource dataSource=new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("111111");
//和数据库建立连接
Connection connection= dataSource.getConnection();
//输入信息
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要修改的学生id");
int id=scanner.nextInt();
System.out.println("请输入要修改的姓名");
String name=scanner.next();
//拼装sql语句
String sql="update student set name=? where id=?";
PreparedStatement statement=connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);
System.out.println("statement:"+statement);
//执行sql语句
int ret=statement.executeUpdate();
System.out.println(ret);
//释放资源
statement.close();
connection.close();
}
增删改操作基本相同。
public static void main(String[] args) throws SQLException {
//1创建数据源
DataSource dataSource=new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("111111");
//建立连接
Connection connection=dataSource.getConnection();
//3拼装SQL
String sql="select * from student";
PreparedStatement statement=connection.prepareStatement(sql);
//4执行sql,对于查询操作,需要使用executoQuery
//使用RssultSet表示这个表
ResultSet resultSet=statement.executeQuery();
//5.遍历结果结合(返回的临时表),先获取到每一行,再获取到这一行中的若干列
//next方法表示获取到一行记录,同时把光标往后移动一行
//如果遍历到表的结束为止,此处的next直接就返回false。
while(resultSet.next()){//第一次执行resultSet.next就表示获取了第一行。
int id=resultSet.getInt("id");
String name=resultSet.getString("name");
System.out.println("id="+id+", name="+name);
}
//6释放资源
statement.close();
connection.close();
}
//查询操作
PreparedStatement.executeQuery();
//新增,修改,删除操作
PreparedStatement.executeUpdate();
(5)处理结果集ResultSet
while(resultSet.next()){
int xxx=resultSet.getInt("xxx");
String yyy=resultSet.getString("yyy");
}
(6)释放资源
statement.close();
connection.close();