Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java上访问数据库数据_Java_Sql Server_Jdbc_Sql Server 2012 - Fatal编程技术网

在Java上访问数据库数据

在Java上访问数据库数据,java,sql-server,jdbc,sql-server-2012,Java,Sql Server,Jdbc,Sql Server 2012,我是一名编程(Java)新手,我正在尝试了解如何使用Microsoft SQL Server 2012处理数据库 我从一本书中获得了下面的代码,只更改了本地服务器地址、密码、数据库名称等 代码无限期运行,只打印“驱动程序已加载!” 而且,我写什么密码或用户名似乎没有什么区别。我已经尝试了许多不同的地址格式,我从微软和论坛。 谁能告诉我我做错了什么?谢谢 package CoisaIdiota; import java.sql.Connection; import java.sql.Driver

我是一名编程(Java)新手,我正在尝试了解如何使用Microsoft SQL Server 2012处理数据库

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

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

而且,我写什么密码或用户名似乎没有什么区别。我已经尝试了许多不同的地址格式,我从微软和论坛。 谁能告诉我我做错了什么?谢谢

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);
    }


    }
}
试着改变

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

如前所述

但这可能还不能解决问题。。。我在看:)

以下是我能看到的可能是原因:

  • 服务器没有运行
  • 港口错了
  • 驱动程序通过套接字讲话,服务器通过端口侦听(为此,请尝试连接到127.0.0.1,而不是本地主机)
  • 用户/密码不正确
我写什么密码或用户名似乎没什么区别

这是因为您在连接之前打印,所以“
驱动程序已加载!
”只是输出:

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

定义“无限期运行”。它是否卡在一个循环中(我只看到一个不会导致无限循环的循环)?您能通过命令行连接到db吗?我的意思是服务器正在运行,端口是否正确?还有,user和pw?您的类pathUser和密码是否正确(如在Microsoft SQL Server中),类路径似乎正在工作(因为它加载了驱动程序)并且“无限期运行”,我的意思是我必须在Eclipse上单击“终止”,否则它永远不会结束。当您说“无限期运行”时,您在终止申请之前等待了多长时间?我在SQL Server和JDBC中经历了30秒到1分钟的超时(无可否认,在SQL Server 2008中,不是2012年)。如果我没记错的话,我会超时,因为SQL Server没有设置为启用TCP连接。请参阅以了解如何执行此操作。
 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 
     ....
}