標籤:otf blog image java uil tab result alt table
JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關聯式資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。
1.配置SQL Server:開始 > Microsoft SQL Server2008 > SQL Server 組態管理員 > SQL Server 網路設定 > SQLEXPRESS 的協議 > TCP/IP
TCP/IP配置:修改IP是“127.0.0.1”的一項和IPAll的一項,修改完成後確定開啟TCP/IP
2.在SQL Server2中建立資料庫MyHotel,建立相關表
3.Eclipse中代碼如下:
1 import java.sql.*; 2 3 class GetCon { 4 Connection con; 5 //得到串連好資料庫MyHotel的Connection 6 public Connection getCon() { 7 try { 8 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 9 }catch (ClassNotFoundException e) {10 System.out.println(e);11 }12 try {13 String url = "jdbc:sqlserver://127.0.0.1:1433;DateBaseName= MyHotel ";14 String saName = "sa";15 String saPw = "123";16 con = DriverManager.getConnection(url,saName,saPw); 17 } catch (SQLException e) {18 System.out.println(e);19 }20 return con;21 }22 }23 24 public class Test1 {25 public static void main(String[] args) {26 GetCon gc = new GetCon();27 Connection con;28 Statement sql;29 ResultSet rs; 30 try { 31 con = gc.getCon();32 sql = con.createStatement();33 //查詢資料庫MyHotel中Hotel表中杜拜帆船酒店單人間的價格34 rs = sql.executeQuery("select Price from Hotel "35 + "where Hname = ‘杜拜帆船酒店‘ and Rmtype = ‘單人間‘");36 if (rs.next()) {37 System.out.println(rs.getString("Price"));38 }39 } catch (SQLException e) {40 e.printStackTrace();41 }42 }43 }
#錯誤總結#
1.未引入sqljdbc4.0報錯:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
java.sql.SQLException: No suitable driver found for jdbc:sqlserver://127.0.0.1:1433;DateBaseName= MyHotel
Exception in thread "main" java.lang.NullPointerException
at Test1.main(Test1.java:32)
解決方案:TestHotel(建立的java項目)> Properties > Java Build Path > Add External JARs... > 選擇下載好的sqljdbc4.jar > OK
2.未設定預設資料庫
com.microsoft.sqlserver.jdbc.SQLServerException: 對象名 ‘Hotel‘ 無效。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)
at Test1.main(Test1.java:34)
解決方案1:在所用表Hotel前加MyHotel..(注意是兩個點!!)即“ 資料庫+ .. +表名 ”
解決方案2:修改預設資料庫,在SQL Server中選擇串連時使用的登入名稱(我的是sa) sa > 屬性 > 常規 > 預設資料庫 > 選擇需要的資料庫(我的是MyHotel)
Eclipse Java Neon 通過JDBC串連SQL Server2008