0

我是编程 (Java) 方面的新手,我正在尝试使用 Microsoft SQL Server 2012 弄清楚如何使用数据库。

我从一本书中得到了下面的代码,只更改了本地服务器地址、密码、数据库名称等。

代码无限期运行,只打印“驱动程序已加载!”

此外,我写的密码或用户名似乎没有区别。我尝试了许多从 Microsoft 和论坛获得的不同地址格式。谁能告诉我我在这里做错了什么?谢谢!

package CoisaIdiota;

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

public class TesteDB {

    static String ConnectURL = "jdbc:sqlserver://localhost:1433;databaseName=teste";
    static String user = "Adm-PC\\Adm";
    static String pw = "password";
    static Connection conn;

    public static void main(String[] args) {
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    } catch (Exception e) {
        System.err.println("The driver couldn’t be loaded!");
        System.err.println(e);
        e.printStackTrace();
        System.exit(-1);
    }
    System.out.println("The driver has been loaded!");

    try {
        conn = DriverManager.getConnection(ConnectURL, user, pw);
        Statement stmt = conn.createStatement();
        String query = "select ID from nomes";
        ResultSet rs = stmt.executeQuery(query);
        while(rs.next()){
        System.out.println(rs.getString("ID"));
        }
        rs.close();
        stmt.close();
    } catch (SQLException e){
        System.err.println("No connection possible.");
        e.printStackTrace();
        System.err.println("SQLException: " + e.getMessage());
        System.err.println("SQLState: " + e.getSQLState());
        System.err.println("VendorError: " + e.getErrorCode());
        System.exit(-1);
    }


    }
}
4

2 回答 2

0

我写的密码或用户名似乎没有什么区别。

这是因为您在连接之前打印,所以“ The driver has been loaded!”只是输出:

try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    } catch (Exception e) {
       ....
    }
    System.out.println("The driver has been loaded!");////you print here before the connection

try {
   ....
    }

要修复它,请在连接后打印 像这样:

 try {
     conn = DriverManager.getConnection(ConnectURL, user, pw);
     System.out.println("The driver has been loaded!");/////if it printed that's mean you enter the correct username and correct password , if not it will print the exception 
     ....
}
于 2013-05-05T14:05:05.230 回答
0

尝试改变

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

正如这里所解释的

但可能还没有解决它......我正在寻找:)

这些是我可以看到的可能是原因的事情:

  • 服务器没有运行
  • 端口错误
  • 驱动程序通过套接字说话,服务器通过端口监听(尝试连接到 127.0.0.1 而不是 localhost)
  • 用户/密码不正确
于 2013-05-05T13:58:10.853 回答