当前位置:Gxlcms >
数据库问题 >
java中链接数据库的具体操作以及pstmt.setObject(i+1, objects[i])这行代码的意思
java中链接数据库的具体操作以及pstmt.setObject(i+1, objects[i])这行代码的意思
时间:2021-07-01 10:21:17
帮助过:4人阅读
dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {
private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
private String url = "jdbc:sqlserver://localhost:1433;databaseName=EasyBuy"
;
private String user = "sa"
;
private String password = "sa"
;
/**
* 获取数据库连接对象
*
* @return
*/
public Connection getcConnection() {
Connection conn =
null;
try {
Class.forName(driver);
conn =
DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库连接对象
* @param rs
* @param pstmt
* @param conn
*/
public void closeAll(ResultSet rs,PreparedStatement pstmt,Connection conn){
try {
if(rs!=
null){
rs.close();
}
if(pstmt!=
null){
pstmt.close();
}
if(conn!=
null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 增删改方法
* @param sql
* @param objects
* @return
*/
public int executeUpdate(String sql,Object[] objects){
int num=0
;
PreparedStatement pstmt=
null;
Connection conn=
getcConnection();
try {
pstmt=
conn.prepareStatement(sql);
for (
int i = 0; i < objects.length; i++
) {
pstmt.setObject(i+1
,objects[i]);
}
num=
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
closeAll(null, pstmt, conn);
}
return num;
}
}
上述是java连接数据库的具体步骤,关闭数据库的话,肯定是先关查询结果rs,再关闭pstmt,再关闭conn而打开反之~~,这里的三个对像应该是创建连接,创建查询,和查询结果。
要想清楚是先有连接,再创建查询,才会返回结果。
对于pstmt.setObject(i+1, objects[i]);这行代码,因为在方法引用了可变参数(为什么要引用可变参数,是因为前面是字符串,后面是数据库语句,类型不匹配),所谓可变参数就是:适用于参数个数不确定,类型不确定的情况,java把可变参数当做数组处理,但不是数组,功能比数组强,可以变成没有参数,或者为空。而这行代码就是将数据库语句赋值给参数,因为参数是从1开始的,故要写成i+1.
java中链接数据库的具体操作以及pstmt.setObject(i+1, objects[i])这行代码的意思
标签: