gpt4 book ai didi

Java初学者对JDBC有一些疑问

转载 作者:行者123 更新时间:2023-12-02 07:35:40 26 4
gpt4 key购买 nike

如何建立 JDBC 连接如何查找本地主机请解决我的问题并解释我的代码错误,并解释我必须集中注意力以及如何在 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)

最佳答案

假设您要求提供代码的描述。首先,您需要阅读一些内容

  • 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
}

您可以在 Google 上找到大量信息和帮助。浏览一遍。

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

关于Java初学者对JDBC有一些疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com