用這個類吧.好的話,給我加加分.

創(chuàng)新互聯(lián)專注于扶風網(wǎng)站建設(shè)服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供扶風營銷型網(wǎng)站建設(shè),扶風網(wǎng)站制作、扶風網(wǎng)頁設(shè)計、扶風網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造扶風網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供扶風網(wǎng)站排名全網(wǎng)營銷落地服務。
import java.sql.*;
/**
* @功能: 一個JDBC的本地化API連接類,封裝了數(shù)據(jù)操作方法,只用傳一個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("執(zhí)行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("執(zhí)行完查詢操作,結(jié)果已返回ResultSet集合");
}else if(sql.substring(0, 6).equals("delete")){
ps.executeUpdate(sql);
System.out.println("已執(zhí)行完畢刪除操作");
}else if(sql.substring(0, 6).equals("insert")){
ps.executeUpdate(sql);
System.out.println("已執(zhí)行完畢增加操作");
}else{
ps.executeUpdate(sql);
System.out.println("已執(zhí)行完畢更新操作");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
public static ResultSet getResultSet(){
System.out.println("查詢結(jié)果為:");
return rs;
}
public static void closeConnection(){
System.out.println("關(guān)閉連接中...");
try {
if (rs != null) {
rs.close();
System.out.println("已關(guān)閉ResultSet");
}
if (ps != null) {
ps.close();
System.out.println("已關(guān)閉Statement");
}
if (conn != null) {
conn.close();
System.out.println("已關(guān)閉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,'教學設(shè)備')";
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();
}
}
先要配置一個數(shù)據(jù)源,打開控制面板 - 管理工具 - 數(shù)據(jù)源 (ODBC),選擇"系統(tǒng)DSN",也可以選擇"用戶DSN"選項卡,點擊"完成",彈出的對話框里將"數(shù)據(jù)源名"一項設(shè)為你喜歡的名字,比如redsun。點"選擇",例如:找到"C:/mess.mdb"文件,如此一個ODBC數(shù)據(jù)源就配置好了。要連接該數(shù)據(jù)源,也就是連接數(shù)據(jù)庫,首先要建立一個JDBC-ODBC橋接器,上面已經(jīng)說過了,其方法是:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class 是Java.lang包中的一個類,通過調(diào)用它的靜態(tài)方法forName就可以建立橋接器。但建立橋接器時可能發(fā)生異常,這是我們所不想見到的,因此要捕獲這個異常:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){異常捕獲}
然后就是連接數(shù)據(jù)庫了,這里要用到j(luò)ava.sql包中的Connection類聲明一個對象,再用類DriverManager調(diào)用它的靜態(tài)方法getConnection創(chuàng)建這個連接。
Connection con=DriverManager.getConnection("jdbc:odbc:數(shù)據(jù)源名字","數(shù)據(jù)源用戶名","數(shù)據(jù)源密碼");
沒有錯的,你在sql執(zhí)行后面加個手動提交呢,conn.commit();//conn這是數(shù)據(jù)庫連接變量,根據(jù)你自己的修改下。
首先你得確定你的數(shù)據(jù)庫連接是通過什么形式連接的,hibernate還是原生態(tài)的jdbc 還是spring;
如果是只有hibernate,那么你得通過加載配置文件得到sessionFactory,然后得到session
如果spring,那么同樣也需要注入sessionfactory到你的dao
如果是jdbc方式,那么你就按照原生態(tài)jdbc寫法
總之,在你構(gòu)造DAO時,得有數(shù)據(jù)源。這樣才能操縱你的數(shù)據(jù)庫
如果搞懂了這些問題,那么你的第一個,第三個問題就迎刃而解了。至于第二問題,我沒明白你什么意思!
你要注意的是連接方式,如果是用sun公司給的Access直連驅(qū)動包,那么是可以插入的。
如果是用java自帶的rt.jar包下驅(qū)動的通過ODBC橋連接的那種連接方式,
用execute或者executeUpdate都只是先把數(shù)據(jù)寫入日志文件。
比如access文件叫db.mdb,用以上的方法會將條目先寫入db.ldb中。
在關(guān)閉連接,就是做close()的時候,才將數(shù)據(jù)寫入數(shù)據(jù)庫文件db.mdb
因為access默認的是事件處理模式,所以你執(zhí)行的SQL語句先是緩存,至少要做commit()以后才會執(zhí)行。但是由于access機制,所以必須每次close以后才會實際的修改到數(shù)據(jù)庫。
希望能解決您的問題。
有測試框架。mock可以模擬測試而不對數(shù)據(jù)庫操作省去還原數(shù)據(jù)庫的麻煩。或者直接編寫junit測試操作數(shù)據(jù)庫。但是這樣要在操作后還原數(shù)據(jù)庫。
名稱欄目:數(shù)據(jù)庫java的修改代碼 數(shù)據(jù)庫修改數(shù)據(jù)代碼
文章源于:http://chinadenli.net/article28/hipgjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、網(wǎng)站導航、品牌網(wǎng)站建設(shè)、商城網(wǎng)站、ChatGPT、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)