首先,關於數據庫的安裝方法在本文中就不再累贅,詳情請見我的上一篇博客。
http://cq520.iteye.com/admin/blogs/1982097
不過需要注意的是,由於裝有Windows操作系統下的電腦都默認有SQL Server,所以大家可以打開自己 的電腦看一下自己的電腦裡面是哪個SQL Server 版本(在開始菜單中找到Microsoft SQL Server文件夾 ,後面的版本號就是本機的SQL Server 版本)。
不過系統自帶的SQL Server可能並沒有管理工具(SQL Server Management Studio,如本人的電腦) ,就可以在百度下載,要記得添加上自己的版本號哦,如SQL Server Management Studio 2005.
下面進入主題,如何使用JDBC連接SQL Server數據庫:(以2005版本為例)
1. 關閉防火牆。防火牆設置會導致你無法連接到本地的數據庫,至少這是出於安全的考慮。
2. 配置TCP端口:
a. 開始->所有程序->Microsoft SQL Server 2005->配置工具- >SQL Server配置管理器->SQL Server 2005 網絡配置->MSSQLSERVER協議
b. 啟用 “TCP/IP”(右鍵單擊選擇“啟動”)[http://www.colalife.com]
c. 雙擊 “TCP/IP”->“IP 地址”->“IPAll”->“TCP 端口 ”項添加默認的“1433”端口
3. 外圍應用配置:Microsoft SQL Server 2005->配置工具->SQL Server外圍應用配置器-> 服務和連接的外圍應用配置器->
①選SQLEXPRESS->Database Engine->遠程連接->本地 連接和遠程連接->同時使用TCP/IP和named pipes
②選SQL Server Browser->服務->啟動類 型改為“自動”->應用->啟動->確定
4. 修改默認的登錄驗證模式(如果在安裝過程中是默認按“Windows 身份驗證模式”方式 安裝,所以sa登錄是被禁用的,即使將身份驗證模式更改為“SQL Server 和 Windows 身份驗證模 式”,sa登錄仍處於禁用狀態,所以需要啟用sa登錄帳戶):
①在SQL Server Management Studio 的對象資源管理器中,安全性->登錄名->右擊“sa”->屬性->
常規->將登錄名sa的密碼和確認密碼設為強密碼->狀態->登錄->啟用->確定
②在 SQL Server Management Studio 的對象資源管理器中,右擊服務器->屬性->安全性->服務器身 份驗證->選擇“SQL Server和Windows身份驗證模式”->確定->確定
5. 在SQL Server Management Studio中新建一個數據庫(例如“mytest”,如果測試程序 帶有數據庫文件也可不用新建而直接附加到當前SQL Server數據庫服務器);在SQL Server Management Studio 的對象資源管理器中右擊服務器->重新啟動->是
6. 運行下載的JDBC文件“sqljdbc_1.2.2828.100_chs.exe”,(已在附件中給大家配上), 解壓到“C:\Program Files”文件夾中;[http://www.colalife.com]
將Classpath設置為包含sqljdbc.jar文件(也可加到系統環境變量中),建議從解壓文件夾下找到 sqljdbc.jar,將其復制到自己常用的Jar文件夾裡,用的時候方便找到。
7. 在Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5 中進行JDBC連接設置並測試
1、打開Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5,新建Java Project”,項目名為Test
2、選擇 “Window”→“Preferences”→“Java”→“Inst alled JREs”,選定已安裝的 JRE,點擊“Edit...”→“Add External JARs”,找到sqljdbc.jar並添加—>OK
3、"Window"->"Open Perspective"->"MyEclipse Database Explorer"->(左側)"DB Browser"右鍵“New”->填寫鏈接屬性Driver name,URL為:jdbc:sqlserver:// localhost:1433;databaseName=mytest,User name:sa,Password:密碼。然後在Driver JARs 點Add JARs 添加sqljdbc.jar,點及Test
Driver測試,勾上Save Password保存密碼,點擊完成結束——即完成了在DB Browser中連 接數據庫配置。
到上面一步為止,我們的配置工作就已經基本完成了,接下來就是一個數據庫編程的具體實例。需要 注意的是,就像我上面所提到的,要進行數據庫編程,至少得有個數據庫吧(巧婦難為無米之炊),還要 會一些基本的數據庫操作,這些對於學過數據庫課程的你應該沒有問題,如果你沒學過數據庫課程,也沒 關系,你可以花時間看看數據庫的一些簡單操作,這些在相關課本上很容易找到。
廢話不多說,代碼如下:
Java代碼
package DBManager; import java.sql.Connection; import java.sql.DriverManager; import INFO.Info; /** * 數據庫連接類 * @author Administrator * */ public class DBConnection { //加載並連接本地的SQLServer String driveName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://localhost:1433;DatabaseName=cqTalk"; String userName="sa"; String pwd="xiaoyan710"; /** * 創建時加載驅動 */ public DBConnection(){ try{ Class.forName(driveName); }catch(Exception e){ Info.error("驅動加載失敗"); } } public Connection getConnection(){ Connection con=null; try{ con=DriverManager.getConnection(url,userName,pwd); Info.log("數據庫連接成功"); }catch(Exception e){ e.printStackTrace(); } return con; } }
Java代碼
package User; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import DBManager.DBConnection; import INFO.Info; /** * 對用戶數據的操作 * @author cq * */ public class UserDao { DBConnection dbCon=null; Connection connection=null; PreparedStatement state=null;//預編譯的sql語句對象 String sql=null;//sql語句 /** * 創建用戶操作類時加載驅動 */ public UserDao(){ dbCon=new DBConnection(); } /** * 添加新用戶的方法 * @param user */ public void add(User user){ connection=dbCon.getConnection(); sql="insert into userData values(?,?,?,?,?)"; try{ state=connection.prepareStatement(sql); state.setString(1, user.getID()); state.setString(2, user.getPwd()); state.setString(3, user.getNickname()); state.setInt(4, user.getChecking()); state.setString(5, user.getAnswer()); state.executeUpdate(); Info.log("用戶添加成功"); state.close(); }catch(Exception e){ e.printStackTrace(); Info.error("用戶添加失敗"); }finally{ if(connection!=null){ try{ connection.close(); }catch(Exception e){ e.printStackTrace(); } } } } /** * 刪除一個用戶的方法,根據用戶的ID號 * @param ID */ public void delete(String ID){ connection=dbCon.getConnection(); sql="delete from userData where userID=?"; try{ state=connection.prepareStatement(sql); state.setString(1, ID); state.executeUpdate(); Info.log("用戶刪除成功"); state.close(); }catch(Exception e){ Info.error("用戶刪除失敗"); }finally{ if(connection!=null){ try{ connection.close(); }catch(Exception e){ e.printStackTrace(); } } } } /** * 更新用戶數據的方法 * @param user */ public void update(User user){ connection=dbCon.getConnection(); sql="update userData set pwd=?,nickname=?" + ",checking=?,answer=? where userID=?"; try{ //執行更新操作時,所填入的數據順序一定要與sql語句的數據順序相同 state=connection.prepareStatement(sql); state.setString(1, user.getPwd()); state.setString(2, user.getNickname()); state.setInt(3, user.getChecking()); state.setString(4, user.getAnswer()); state.setString(5, user.getID()); state.executeUpdate(); Info.log("用戶更新成功"); state.close(); }catch(Exception e){ e.printStackTrace(); Info.error("數據更新失敗"); }finally{ if(connection!=null){ try{ connection.close(); }catch(Exception e){ e.printStackTrace(); } } } } /** * 根據用戶ID查找用戶的信息 * @param ID */ public User get(String ID){ User user=new User(); connection=dbCon.getConnection(); sql="select * from userData where userID=?"; try{ state=connection.prepareStatement(sql); state.setString(1, ID); ResultSet set=state.executeQuery(); while(set.next()){ user.setID(set.getString(1).trim()); user.setPwd(set.getString(2).trim()); user.setNickname(set.getString(3).trim()); user.setChecking(set.getInt(4)); user.setAnswer(set.getString(5)); } state.close(); set.close(); }catch(Exception e){ Info.error("查找失敗"); }finally{ if(connection!=null){ try{ connection.close(); }catch(Exception e){ e.printStackTrace(); } } } return user; } }
查看本欄目
Java代碼
package User; /** * 用戶類 * @author cq * */ public class User { private String ID;//賬號 private String pwd;//密碼 private String nickname;//昵稱 private int checking;//密保驗證編號 private String answer;//答案 public User(){ } public User(String ID,String pwd){ this.ID=ID; this.pwd=pwd; } /** * 獲取賬號 * @return */ public String getID() { return ID; } /** * 設置賬號 * @param iD */ public void setID(String iD) { ID = iD; } /** * 獲取密碼 * @return */ public String getPwd() { return pwd; } /** * 設置密碼 * @param pwd */ public void setPwd(String pwd) { this.pwd = pwd; } /** * 獲取昵稱 * @return */ public String getNickname() { return nickname; } /** * 設置昵稱 * @param nickname */ public void setNickname(String nickname) { this.nickname = nickname; } /** * 獲取驗證編號 * @return */ public int getChecking() { return checking; } /** * 設置驗證編號 * @param checking */ public void setChecking(int checking) { this.checking = checking; } /** * 獲取密保答案 * @return */ public String getAnswer() { return answer; } /** * 設置密保答案 * @param answer */ public void setAnswer(String answer) { this.answer = answer; } }
這裡簡單的介紹了數據庫的增刪查改等功能(這熟悉的名詞是否也在哪裡聽過呢??O(∩_∩) O~),特別需要注意的是,我在更新數據方法中所標明的那一句注釋,很多人經常搞亂了順序而得不到正 確的結果。
此外,還有幾點:
一、一定要記得finally語句中所執行的內容,不管操作是否成功都一定要關閉連接,這一點非常重要 。
二、最好將異常消息打印出來,這在初期編程的時候能夠更加方便的幫你解決問題。
三、在使用完數據庫之後將’sa’用戶的密碼策略改為強制過期,(這一點是出於信息安 全的考慮),在每次使用前再取消密碼強制過期,並修改密碼,再執行jdbc操作,具體修改方法請見上面 第四條。
四、Sql Server2000和2005的連接代碼區別:(注意2000和2005的不同)
1. 連接 SqlServer2000
Class.forName ("com.microsoft.jdbc.sqlserver.SQLServerDriver");
URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";
2. 連接 SqlServer2005
Class.forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver");
URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
五、可能出現的exception: com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll
解決辦法:在sqljdbc_1.2.2828.100_chs.exe解壓後的文件夾中找到Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.2\chs\auth\x86下的sqljdbc_auth.dll拷貝到:C:WINDOWSsystem32 目錄下即可。
基本內容就到這裡了,如果你使用的是MySQL,那也沒關系,除了環境配置之外,只是驅動跟端口號需 要修改罷了,快用數據庫優化你的程序吧。