eclipse,myeclipse中java連接數據庫的問題
首先,如果沒有msbase.jar,mssqlserver,msutil.jar這三個包連接sql需要的包,編寫好代碼運行會出現異常:
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver(也有可能是因為SQL1433端口沒開)
解決辦法:在工程目錄右擊屬性->構建路徑->選擇庫標簽,添加外部jars包,把三個jar包導入即可。放到lib下 Eclipse會自動幫你 build path 放其他地方的話 就需要你手動build path
(如果是myeclipse中的servlet,jsp的。加載路徑就好:
)
接下來開始編寫代碼:
String sql = "use spdb select * from users";
//指定好驅動
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
// 連接字符串,格式:( "jdbc:公司名稱:數據庫驅動名稱://數據庫服務器ip:端口號;DatabaseName=數據庫名稱","數據庫賬號","密碼")
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName = spdb", "sa","sa");
Statement stmt = conn.createStatement();
//返回記錄
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
String s = rs.getString(2);
System.out.println(s);
這時有可能出現問題:
問題1:異常[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用戶 'sa' 登錄失敗
解決辦法:
第一步:在打開SQL的服務器(用本地登陸SQL後,對象資源管理器裏的綠色圖標),屬性裏麵->安全性,設置為windows和sql混合身份驗證模式。
第二步:回到對象資源管理器,展開安全性選項,右擊sa屬性,在狀態裏麵改為啟用。(如果不用sa,也可以重新創建一個賬戶)
這兩步都好了,必須要在配置管理中關掉SQL的服務,重啟。否則任然出現登陸失敗。
問題2:異常[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
解決辦法:如果原本數據庫中就沒有值,那麼會出現該警告。但是我的數據庫中有值。百度後得到的結果是:問題很簡單,默認打開時的遊標不是在第一行上(而是在第一行之前),所以你根本不能取數據,當然需要使用rs.next()來移動遊標才行.
解決之後還是會出現該警告,後來發現是要在查詢語句中加入use spdb,即sql = "use spdb select
* from users"
以下為一些小問題:
關鍵字 'from' 附近有語法錯誤:
在調用這個pr=ct.prepareStatement("select top "+pageSize+" * from users");的時候,top後麵空格,*號前麵空格要加
這裏有個statement和prestatement的差別
第一:
prepareStatement會先初始化SQL,先把這個SQL提交到數據庫中進行預處理,多次使用可提高效率。
createStatement不會初始化,沒有預處理,沒次都是從0開始執行SQL
第二:
prepareStatement可以替換變量
在SQL語句中可以包含?,可以用ps=conn.prepareStatement("select * from Cust where ID=?");
int sid=1001;
ps.setInt(1, sid);
rs = ps.executeQuery();
可以把?替換成變量。
而Statement隻能用
int sid=1001;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);
來實現。
第三:
prepareStatement會先初始化SQL,先把這個SQL提交到數據庫中進行預處理,多次使用可提高效率。
createStatement不會初始化,沒有預處理,沒次都是從0開始執行SQL
今天出現編碼出現了No suitable driver found for jdbc,又是找遍了網上的資料,基本上都說是三個問題:
一是:連接URL格式出現了問題(Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX")
二是:驅動字符串出錯(com.mysql.jdbc.Driver)
三是Classpath中沒有加入合適的mysql_jdbc驅動
經過我的仔細檢查,這三種錯誤我都沒有犯,為什麼呢?
嚐試著將mysql-connector-java-3.1.14-bin.jar的jar包加入C:\Program Files\Java\jre1.6.0_02\lib\ext文件夾下,問題解決了!!
原來是不僅僅要求將驅動加入classpath中,而且需要將該jar包加入到java運行環境的外部jar包中,唉,下次這種低級錯誤還是少犯為妙
最後更新:2017-04-02 22:16:35