5:JDBC的访问步骤
A:加载驱动
1:将相关数据库的驱动包拷到对应的应用程序中。并加载到编译路径中。
2:使用Class.forName来加载相应的驱动程序。
B:使用驱动管理器获取连接
String url = "jdbc:oracle:thin:@127.0.0.1:1521:oradb";
String username = "JN0909";
String password = "JN0909";
Connection conn = DriverManager.getConnection(url, username,
password);
C:构造SQL,并通过Statement对象执行SQL
Statement stmt = conn.createStatement();
System.out.println(stmt);
String sql = "insert into t_mc_type(nid,sname,npid) values(15,'JDBC插入的数据','1')";
int i = stmt.executeUpdate(sql);
D:关闭资源
finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
6:Statement对象
执行Insert/update/delete --->executeUpdate();
执行Select多条/Select单条---->executeQuery();
7:ResetSet对象
结果集(记录集)对象,结果集指针停在记录集第一行的前面。
返回多条,while循环
返回单条,if判断。
不可滚动的记录集对象
stmt = conn.createStatement();
String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user";
rs = stmt.executeQuery(sql);
可滚动的记录集对象
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user";
rs = stmt.executeQuery(sql);
可更新的记录集记录
效率比较慢。正常更新数据还是使用insert/update/delete
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "Select suser,spwd,sname,ssex,nage,dregdate from t_user where suser = 'lin'";
rs = stmt.executeQuery(sql);
// boolean flag = rs.absolute(3);
boolean flag = rs.last();
if (flag == true) {
//rs.updateString("suser", "lin2");
rs.updateString("spwd", "789修改22");
rs.updateString("sname", "直实名称_修改");
rs.updateString("ssex", "男");
rs.updateInt("nage", 100);
rs.updateTimestamp("dregdate", java.sql.Timestamp
.valueOf("2009-1-1 20:52:33"));
//rs.updateRow();
rs.deleteRow();
}
8:PreparedStatement对象
用于预编译SQL语句。
9:JDBC事务
conn.setAutoCommit(false);
conn.commit();
conn.rollback();
例子:
package com.softfz;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
test.transaction();
}
public void executeUpdate() {
Connection conn = null;
Statement st = null;
String sql = "insert into t_user(userid,username) values(seq_t_user.nextval,'hpp')";
try {
conn = getConn();
st = conn.createStatement();
int effectedRows = st.executeUpdate(sql);
System.out.println(effectedRows);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
closeConn(null,st,conn);
}
}
public void transaction() {
Connection conn = null;
Statement st = null;
String sql = "insert into t_user(userid,username) values(seq_t_user.nextval,'hpp')";
String sql1 = "delete from t_user where id=1";
try {
conn = getConn();
conn.setAutoCommit(false);
st = conn.createStatement();
st.executeUpdate(sql);
st.executeUpdate(sql1);
conn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}finally{
closeConn(null,st,conn);
}
}
public void executeQuery() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
String sql = "select * from t_user";
try {
conn = getConn();
st = conn.createStatement();
rs = st.executeQuery(sql);
while(rs.next())
{
String username = rs.getString("username");
int userid = rs.getInt(1);
System.out.println("username="+username);
System.out.println("userid="+userid);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
closeConn(rs,st,conn);
}
}
private static Connection getConn() {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String username = "hpp";
String password = "hpp";
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
private static void closeConn(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (st != null) {
st.close();
st = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
浙公网安备 33010602011771号