重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
用這個類吧.好的話,給我加加分.
創新互聯專注于扶風網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供扶風營銷型網站建設,扶風網站制作、扶風網頁設計、扶風網站官網定制、成都微信小程序服務,打造扶風網絡公司原創品牌,更為您提供扶風網站排名全網營銷落地服務。
import java.sql.*;
/**
* @功能: 一個JDBC的本地化API連接類,封裝了數據操作方法,只用傳一個SQL語句即可
* @作者: 李開歡
* @日期: 2007/
*/
public class ConnectionDemo {
/*
* 這里可以將常量全部放入另一個類中,以方便修改
*/
private static Connection conn;
private static Statement ps;
private static ResultSet rs;
private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
private static final String USER ="sa";
private static final String PASS = "sa";
public ConnectionDemo() {
// TODO Auto-generated constructor stub
ConnectionDemo.getConnection();
}
public static Connection getConnection(){
System.out.println("連接中...");
try {
Class.forName(ConnectionDemo.DRIVER);
conn = DriverManager.getConnection(ConnectionDemo.URL, ConnectionDemo.USER, ConnectionDemo.PASS);
System.out.println("成功連接");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static Statement getStatement(String sql){
System.out.println("執行SQL語句中...");
try {
ps = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
if(sql.substring(0, 6).equals("select")){
rs = ps.executeQuery(sql);
System.out.println("執行完查詢操作,結果已返回ResultSet集合");
}else if(sql.substring(0, 6).equals("delete")){
ps.executeUpdate(sql);
System.out.println("已執行完畢刪除操作");
}else if(sql.substring(0, 6).equals("insert")){
ps.executeUpdate(sql);
System.out.println("已執行完畢增加操作");
}else{
ps.executeUpdate(sql);
System.out.println("已執行完畢更新操作");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
public static ResultSet getResultSet(){
System.out.println("查詢結果為:");
return rs;
}
public static void closeConnection(){
System.out.println("關閉連接中...");
try {
if (rs != null) {
rs.close();
System.out.println("已關閉ResultSet");
}
if (ps != null) {
ps.close();
System.out.println("已關閉Statement");
}
if (conn != null) {
conn.close();
System.out.println("已關閉Connection");
}
} catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ConnectionDemo.getConnection();
String sql = "delete from type where id = 1";
ConnectionDemo.getStatement(sql);
String sql2 = "insert into type values(1,'教學設備')";
ConnectionDemo.getStatement(sql2);
String sql1 = "select * from type";
ConnectionDemo.getStatement(sql1);
ResultSet rs = ConnectionDemo.getResultSet();
System.out.println("編號 "+"類 型");
try {
while(rs.next()){
System.out.print(" "+rs.getInt(1)+" ");
System.out.println(rs.getString(2));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionDemo.closeConnection();
}
}
先要配置一個數據源,打開控制面板 - 管理工具 - 數據源 (ODBC),選擇"系統DSN",也可以選擇"用戶DSN"選項卡,點擊"完成",彈出的對話框里將"數據源名"一項設為你喜歡的名字,比如redsun。點"選擇",例如:找到"C:/mess.mdb"文件,如此一個ODBC數據源就配置好了。要連接該數據源,也就是連接數據庫,首先要建立一個JDBC-ODBC橋接器,上面已經說過了,其方法是:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class 是Java.lang包中的一個類,通過調用它的靜態方法forName就可以建立橋接器。但建立橋接器時可能發生異常,這是我們所不想見到的,因此要捕獲這個異常:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){異常捕獲}
然后就是連接數據庫了,這里要用到java.sql包中的Connection類聲明一個對象,再用類DriverManager調用它的靜態方法getConnection創建這個連接。
Connection con=DriverManager.getConnection("jdbc:odbc:數據源名字","數據源用戶名","數據源密碼");
沒有錯的,你在sql執行后面加個手動提交呢,conn.commit();//conn這是數據庫連接變量,根據你自己的修改下。
首先你得確定你的數據庫連接是通過什么形式連接的,hibernate還是原生態的jdbc 還是spring;
如果是只有hibernate,那么你得通過加載配置文件得到sessionFactory,然后得到session
如果spring,那么同樣也需要注入sessionfactory到你的dao
如果是jdbc方式,那么你就按照原生態jdbc寫法
總之,在你構造DAO時,得有數據源。這樣才能操縱你的數據庫
如果搞懂了這些問題,那么你的第一個,第三個問題就迎刃而解了。至于第二問題,我沒明白你什么意思!
你要注意的是連接方式,如果是用sun公司給的Access直連驅動包,那么是可以插入的。
如果是用java自帶的rt.jar包下驅動的通過ODBC橋連接的那種連接方式,
用execute或者executeUpdate都只是先把數據寫入日志文件。
比如access文件叫db.mdb,用以上的方法會將條目先寫入db.ldb中。
在關閉連接,就是做close()的時候,才將數據寫入數據庫文件db.mdb
因為access默認的是事件處理模式,所以你執行的SQL語句先是緩存,至少要做commit()以后才會執行。但是由于access機制,所以必須每次close以后才會實際的修改到數據庫。
希望能解決您的問題。
有測試框架。mock可以模擬測試而不對數據庫操作省去還原數據庫的麻煩。或者直接編寫junit測試操作數據庫。但是這樣要在操作后還原數據庫。