0

JDBC接続を確立する方法とローカルホストを見つける方法 私の問題を解決し、私が集中しなければならないという説明と私のコードエラーを説明し、jスイングでデータベースのフィールドを印刷する方法を説明してください

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)
4

1 に答える 1

2

コードの説明を求めていると仮定します。まず、いくつかのことを読む必要があります

  • JDBC API
  • JDBC ドライバー マネージャー
  • JDBC-ODBC ブリッジ

今、あなたのコードの説明は次のようになります

  • Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");これにより、Driver クラスがロードされ、そのインスタンスが返されます。これにより、ソケットの確立やネイティブ コードの呼び出しなどの複雑さがすべて隠されます。
  • DriverManager.getConnection(url, username, password);これにより、指定された URL と資格情報を使用してデータベースへの接続が確立されます。各ドライバーは、URL を定義するための独自の標準を指定します。それらの標準は、ドライバーのドキュメントに記載されています。
  • st=con.createStatement();接続が確立されると、1 つの接続で複数のステートメント (クエリ) を実行できます。データベースに対して起動するクエリごとに、このステートメントを呼び出す必要があります。
  • rs=st.executeQuery(qry);最後にクエリを実行し、クエリの結果を受け入れると、ResultSet次のイテレータ パターンにラップされます。

結果セットを取得すると、クエリ結果のすべての行が含まれます。すべての行を取得するには、それを反復処理する必要があります。例は次のとおりです。

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

Google で多くの情報とヘルプを見つけることができます。それらを一度通過してください。

更新(OP 編集後) classapth でドライバー クラスが見つからないことを明確に示す例外。sqlserver の jdbc jar をクラスパスに追加します。

于 2012-09-05T07:57:03.100 に答える