0

如何建立 JDBC 连接以及如何找到 localhost 请解决我的问题并解释我的代码错误,解释我必须集中注意力以及如何在 j swing 中打印数据库的字段

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();建立连接后,您可以在单个连接上执行多个语句(查询)。您需要为要针对数据库触发的每个查询调用此语句。
  • rs=st.executeQuery(qry);最后执行查询并接受您的查询结果,它们将被包装成ResultSet遵循迭代器模式。

获得结果集后,它将包含查询结果的所有行。您需要遍历它以获取所有行,示例如下

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

你可以在谷歌上找到很多信息和帮助。通过它们一次。

更新(OP 编辑​​后)异常清楚地表明在 classapth 上找不到驱动程序类。将 sqlserver 的 jdbc jar 添加到类路径中。

于 2012-09-05T07:57:03.100 回答