JDBC的使用
使用JDBC的大概流程
第一步:加载驱动程序(引入mysql依赖后能够自动加载)
第二步:使用java.sql包中的DriverManager类获取Connection连接。
第三步:获取执行SQL的Statement对象。
第四步:执行SQL语句。
第五步:关闭资源
代码实现:
public class TestJDBC {
//指定数据库的IP地址、端口号、数据库名称
private static final String URL = "jdbc:mysql://localhost:3306/test";
//指定数据库的用户名
private static final String USER = "root";
//数据库用户名对应的密码
private static final String PASSWORD = "1234";
public static void main(String[] args) throws SQLException {
//加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//获取连接(需要指定数据库地址、数据库用户名称、数据库用户密码)
Connection connection = DriverManager.getConnection(URL,USER,PASSWORD);
//获取执行SQL语句的Statement对象
Statement statement = connection.createStatement();
//要执行的查询语句
String sql = "select * from orderlist";
//执行查询,获取结果集
ResultSet resultSet = statement.executeQuery(sql);
//使用结果集时,必须在next向下查询为true是才能使用。
while (resultSet.next()){
//根据下标获取结果集中的值
System.out.println(resultSet.getString(2));
//根据数据库表列名称获取值
resultSet.getString("user_name");
}
//要执行的修改语句
String updateSql = "update orderlist set addr = '中国' where id = 2";
//执行修改,返回值为受影响的行数。
int i = statement.executeUpdate(updateSql);
System.out.println(i);
//要执行的新增语句
String insertSql = "insert into user(id,user_name,password,phone,college,addr) value (3,'han','123456','15011225566','中国','中国')";
//执行新增,返回值为受影响的行数
int i1 = statement.executeUpdate(insertSql);
System.out.println(i1);
//要执行的删除语句
String deleteSql = "delete from user where id = 3";
//执行删除,返回值为受影响的行数
int i2 = statement.executeUpdate(deleteSql);
System.out.println(i2);
//关闭资源
statement.close();
connection.close();
}
}
Statement(不能传递参数)
使用Statement操作数据库的大概流程
第一步:加载驱动程序(引入mysql依赖后能够自动加载)
第二步:使用java.sql包中的DriverManager类获取Connection连接。
第三步:获取执行SQL的Statement对象。
第四步:编写SQL语句。
第五步:调用Statement的方法执行SQL语句(参数为SQL语句)。
第六步:关闭资源
注意:
1.Statement执行SQL语句不能传递参数
2执行查询使用executeQuery(sql)方法
3.执行增删改使用executeUpdate(sql)方法
//要执行的查询语句
String sql = "select * from orderlist";
//执行查询,获取结果集
ResultSet resultSet = statement.executeQuery(sql);
//要执行的修改语句
String updateSql = "update orderlist set addr = '中国' where id = 2";
//执行修改,返回值为受影响的行数。
int i = statement.executeUpdate(updateSql);
//要执行的新增语句
String insertSql = "insert into user(id,user_name,password,phone,college,addr) value (3,'han','123456','15011225566','中国','中国')";
//执行新增,返回值为受影响的行数
int i1 = statement.executeUpdate(insertSql);
//要执行的删除语句
String deleteSql = "delete from user where id = 3";
//执行删除,返回值为受影响的行数
int i2 = statement.executeUpdate(deleteSql);
PreparedStatement(可以传递参数)
使用PreparedStatement操作数据库的大概流程;
第一步:加载驱动程序(引入mysql依赖后能够自动加载);
第二步:使用java.sql包中的DriverManager类获取Connection连接;
第三步:编写SQL语句,使用问号做占位符;
第四步:将SQL语句作为参数获取PreparedStatement对象,对SQL进行了预编译;
第五步:传递参数
第六步:调用PreparedStatement的方法执行SQL语句(会将占位符换成参数值)。
第七步:关闭资源
注意:
1.PreparedStatement会对SQL语句进行预编译,使用问号作为占位符,在真正执行SQL语句时将占位符替换成参数。
2.执行查询使用executeQuery()方法
3.执行增删改使用executeUpdate()方法
public class TestJDBCByPreparedStatement {
//加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//指定数据库的IP地址、端口号、数据库名称
private static final String URL = "jdbc:mysql://localhost:3306/ershoujiaoyi";
//指定数据库的用户名
private static final String USER = "root";
//数据库用户名对应的密码
private static final String PASSWORD = "password";
public static void main(String[] args) throws SQLException {
//获取连接(需要指定数据库地址、数据库用户名称、数据库用户密码)
Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
//要执行的SQL语句,问号为占位符
String sql = "select * from user where id = ? and college = ?";
//获取PreparedStatement,会对SQL进行预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//传递int类型的参数(第一个值理解为SQL语句中第几个问号,第二个值为真正的参数)
preparedStatement.setInt(1,2);
//传递String类型的参数
preparedStatement.setString(2,"北京大学");
//执行查询语句,获取查询结果
ResultSet resultSet = preparedStatement.executeQuery();
//执行增删改语句,返回值为受影响的行数。
int i = preparedStatement.executeUpdate();
//使用结果集时,必须在next向下查询为true是才能使用。
while (resultSet.next()){
//根据数据库表列名称获取值
System.out.println(resultSet.getString("user_name"));
}
//关闭资源
preparedStatement.close();
connection.close();
}
}
查询语句返回值ResultSet
当查询的结果集为一行数据时,使用next()方法将指针指向第一行数据,然后再根据数据库表的列明获取查询的值。
ResultSet中的值只能根据next()方法将指针向下查询然后再去获取需要的值。