1.数据库的连接
1.1. 创造一个数据库连接对象(Connection对象,代表与数据源进行的唯一会话)。
1.2. 创建编译语句对象(Statement对象,建立了到特定数据库的连接之后,就可用该连接发送 SQL 语 句)。
1.3. 创建预编译语句对象(PreparedStatement对象, 实例包含已编译的 SQL 语句。这就是使语句“准备好”)。
1.4. 创建结果集对象(ResultSet对象, 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.)
// 创建一个数据库连接
Connection connection = null;
// 创建编译语句对象
Statement stat =null;
// 创建预编译语句对象
PreparedStatement pstat = null;
// 创建结果集对象
ResultSet rs1 = null;
int rs2 ;
1.5. driverName,这个是你驱动的名称。
1.6. URL,你数据库的地址,比如我jdbc:oracle:thin:@localhost:1521:stulibrary中,localhost表示在本机,1521表示数据库的端口号,stulibrary表示数据库的名称。
1.7. userName,表示你的数据库登录名。
1.8. pwd,表示登录名的登录密码
//驱动名称
private static final String driverName="oracle.jdbc.driver.OracleDriver";
//数据库的地址(通过端口和SID找到对应的数据库)
private static final String URL="jdbc:oracle:thin:@localhost:1521:stulibrary";
//数据库登录用户名
private static final String userName="admin";
//数据库登录密码
private static final String pwd="123456";
2. 具体的连接类
public Connection getConnection(){
try {
//加载oracle驱动
Class.forName(driverName);
//通过驱动获取数据库的连接
connection = DriverManager.getConnection(URL,userName,pwd);
System.out.println("连接成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
3.更新
executeUpdate(sql)可以用来插入,删除和更新值。
其他操作与查询相同
public int update(String sql){
try {
connection = getConnection();
stat = connection.createStatement();
rs2 = stat.executeUpdate(sql);
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs2;
}
4.替换
替换类中需要sql语句和一个字符串。
prepareStatement时sql语句可以这样写
UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?
用问号代替所需要填入的值,然后通过pstat.setString方法再把值赋给它,具体实现是pstat.setString(?的位置),需要替换的字符串值)。
ps:需要注意的是?的位置从第一个开始,不是第0个,比如上条语句需要给第一个?赋值1时就需要这样写pstat.setString(1,“1”);
public void update(String sql, String[] args){
try {
connection = getConnection();
pstat = connection.prepareStatement(sql);
System.out.println(sql);
System.out.println(args.length);
for (int i = 0; i < args.length; i++) {
pstat.setString(i+1, args[i]);
System.out.println(pstat);
}
pstat.executeUpdate();
connection.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
5.删除
值得注意的是,这里就是我刚才所讲的,返回的受影响的行数,所以这里人返回的是int类型的rs2。在之后的编写中可以通过这个rs2判断是否删除成功。
public int delete(String sql){
try {
connection = getConnection();
stat = connection.createStatement();
rs2 = stat.executeUpdate(sql);
return rs2;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
6.关闭数据库连接,释放资源
值得注意的是,这里就是我刚才所讲的,返回的受影响的行数,所以这里人返回的是int类型的rs2。在之后的编写中可以通过这个rs2判断是否删除成功。
public void close(){
try {
if(rs1!=null) {
rs1.close();
}
if(stat!=null) {
rs1.close();
}
if(pstat!=null) {
rs1.close();
}
if(connection!=null) {
rs1.close();
}
} catch (SQLException e) {
// TODO: handle exception
}
}