如何建立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)
答案 0 :(得分:2)
假设您要求提供代码说明。首先,你需要阅读一些事情
现在,您的代码说明就像
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添加到类路径中。