2012-09-05 67 views
0

如何建立JDBC連接如何找到本地主機 請解決我的問題,並解釋我的代碼錯誤與解釋,我要集中精力,如何打印領域數據庫j中搖擺Java初學者在JDBC有些疑惑

package swingtesting; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

/** 
* 
* @author Admin 
*/ 
public class NewClass { 
    public static void main(String[] args){ 
    Connection con=null; 
     Statement st=null; 
     ResultSet rs=null; 
     try{ 
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
     con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:3535;DatabaseName=swingmail;User=sa;Password=sa;"); 
     st=con.createStatement(); 
     String qry=" select * from empmail"; 
     rs=st.executeQuery(qry); 
     System.out.println(rs.getString("empid")); 
     System.out.println(rs.getString("empname")); 
     System.out.println(rs.getString("desg")); 
     System.out.println(rs.getString("basic")); 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 

    } 
} 

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:169) 
     at swingtesting.NewJSwing.main(NewJSwing.java:130) 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
     at swingtesting.NewJSwing.initComponents(NewJSwing.java:39) 
     at swingtesting.NewJSwing.<init>(NewJSwing.java:27) 
     at swingtesting.NewJSwing$2.run(NewJSwing.java:122) 
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) 
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) 
+1

笏是這裏的問題?你沒有分享代碼錯誤? – Metalhead

+0

這段代碼沒有使用Swing,所以它可能有助於清理你的問題到相關的元素。任何編譯時或運行時錯誤都會有所幫助。 –

+0

我只是想知道如何在框架中的j swing上打印數據庫中的字段 – user1648224

回答

2

假設你要求你的代碼的說明。首先,你需要在幾件事情

閱讀
  • JDBC API
  • JDBC驅動程序管理器
  • JDBC-ODBC橋

現在,你的代碼的描述是這樣

  • Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");這會加載Driver類並返回它的實例,這將隱藏套接字建立的所有複雜性並調用native代碼等。
  • DriverManager.getConnection(url, username, password);這建立了與給定的URL和憑證的數據庫連接。每個驅動程序都指定自己的標準來定義URL,您可以在其文檔中找到它們。
  • st=con.createStatement();連接建立後,您可以在單個連接上執行多個語句(查詢)。您需要針對要針對數據庫啓動的每個查詢調用此語句。
  • rs=st.executeQuery(qry);最後執行查詢並接受查詢的結果,它們將被包裝成ResultSet,它遵循迭代器模式。

一旦獲得結果集,它將包含查詢結果的所有行。你需要來遍歷它讓所有的行,示例如下

while(rs.next()) { 
    String empId = rs.getString("empid"); 
    System.out.println(empId); 
    //other fields 
} 

你可以找到大量的信息,並在谷歌的幫助。通過他們一次。

UPDATE(OP編輯後) 例外清楚地表明驅動程序類沒有在classapth上找到。 將sqlserver的jdbc jar添加到類路徑中。

+0

現在非常確定abt jdbc和我有一些想法,現在可以處理JDBC有點 – user1648224

+0

好吧,你提到的錯誤是因爲你的類路徑缺少sqljdbc.jar,將它添加到你的類路徑中。 –

+0

http://stackoverflow.com/users/1300669/rp謝謝你 – user1648224