看这一篇博文的童鞋,相信已经对数据库交互的基础(数据库连接)已经掌握了。
如果没有掌握,请前往Java JDBC 之 URL 与数据库连接进行学习掌握!
接下来我来介绍一下 Java JDBC 之 Statement
这个是用来干嘛的呢?
Statement 是用来帮我们操作数据库(增、删、改、查)的。
下面我将来介绍它的常用的几个方法。。。。。。。。。。。。
我们先来介绍 Statement 的 executeQuery()方法 来怎么 查询出数据库的数据
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库的属性字符串
//url数据库地址
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = DBDemo";
//登录名
String user = "sa";
//登录密码
String password = null;
//将写好的数据库连接字符串通过参数传入getConnection方法然后通过返回值获得与数据库的连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//查询数据库数据的SQL语句
String sql = "select Id,Password,Name,Age from UserInfo";
//创建一个Statement对象,用Connection的createStatement()方法来进行实例化
Statement stmt = conn.createStatement();
//创建一个ResultSet对象来接收数据库返回的数据集
ResultSet rs = stmt.executeQuery(sql);
//通过ResultSet对象的next()方法来判断ResultSet对象中是否有数据
//如果有,执行完一次之后跳到下一行数据,直到没有数据为止,返回false
//然后通过getString方法获取ResultSet对象里面的数据,显示输出
while (rs.next()) {
System.out.println("Id:"+rs.getString("Id"));
System.out.println("Password:"+rs.getString("Password"));
System.out.println("Name:"+rs.getString("Name"));
System.out.println("Age:"+rs.getString("Age"));
}
接下来我们介绍 Statement 的另一个方法 executeUpdate(),这个方法用来 数据库的(增、删、改)
增加
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库的属性字符串
//url数据库地址
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = DBDemo";
//登录名
String user = "sa";
//登录密码
String password = null;
//将写好的数据库连接字符串通过参数传入getConnection方法然后通过返回值获得与数据库的连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//向数据库添加数据的SQL语句
String sql = "insert into UserInfo values('564646','123456','大黄',23)";
//创建一个Statement对象,用Connection的createStatement()方法来进行实例化
Statement stmt = conn.createStatement();
//创建一个对象来接收数据库返回受影响的行数,如果失败返回-1
int rows = stmt.executeUpdate(sql);
//判断rows是否大于0,如果大于0则表示添加成功,否则添加失败
if (rows > 0) {
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
修改
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库的属性字符串
//url数据库地址
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = DBDemo";
//登录名
String user = "sa";
//登录密码
String password = null;
//将写好的数据库连接字符串通过参数传入getConnection方法然后通过返回值获得与数据库的连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//修改数据库数据的SQL语句
String sql = "update UserInfo set Name = '小雅' where Id = 564644";
//创建一个Statement对象,用Connection的createStatement()方法来进行实例化
Statement stmt = conn.createStatement();
//创建一个对象来接收数据库返回受影响的行数,如果失败返回-1
int rows = stmt.executeUpdate(sql);
//判断rows是否大于0,如果大于0则表示修改成功,否则修改失败
if (rows > 0) {
System.out.println("修改成功!");
} else {
System.out.println("修改失败!");
}
删除
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库的属性字符串
//url数据库地址
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = DBDemo";
//登录名
String user = "sa";
//登录密码
String password = null;
//将写好的数据库连接字符串通过参数传入getConnection方法然后通过返回值获得与数据库的连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//删除数据库数据的SQL语句
String sql = "delete UserInfo where Id = 1234456";
//创建一个Statement对象,用Connection的createStatement()方法来进行实例化
Statement stmt = conn.createStatement();
//创建一个对象来接收数据库返回受影响的行数,如果失败返回-1
int rows = stmt.executeUpdate(sql);
//判断rows是否大于0,如果大于0则表示删除成功,否则删除失败
if (rows > 0) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败!");
}
是不是感觉(增、删、改)很像?
所以我们一般把(增、删、改)写成一个通用的方法
/**
* 数据库(增、删、改)通用的方法
* @param sql 操作数据库的SQL语句
* @return 受影响的行数
*/
public int dbUpdate(String sql){
try {
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//创建连接数据库的属性字符串
//url数据库地址
String url = "jdbc:sqlserver://localhost:1433;DatabaseName = DBDemo";
//登录名
String user = "sa";
//登录密码
String password = null;
//将写好的数据库连接字符串通过参数传入getConnection方法然后通过返回值获得与数据库的连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//创建一个Statement对象,用Connection的createStatement()方法来进行实例化
Statement stmt = conn.createStatement();
//创建一个对象来接收数据库返回受影响的行数,如果失败返回-1
int rows = stmt.executeUpdate(sql);
//返回受影响的行数
return rows;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1;
}
OK,这次的Statement介绍就到这里了,加油VK。。。。。。。。。。