当前位置: 首页 > 面试题库 >

JDBC:简单的MSSql连接示例不起作用

申屠鹏
2023-03-14
问题内容

我正在学习Java,只需运行一些简单的操作即可通过JDBC从MSSQL检索一些数据。我的书中的示例不起作用(但是已经使用了好几年了),下面的MS中的示例对我也不起作用:

http://msdn.microsoft.com/zh-
CN/library/ms378956(v=sql.90).aspx

这是我的代码:

package javasql;
import java.sql.*;
import java.util.*;

public class Program {

    private static String url = "jdbc:sqlserver://localhost\\SQLExpress;database=Northwind;integratedSecurity=true;";
    //private static String userName = "sa";
    //private static String password = "myPassword";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        RunDemo();
    }

    public static void RunDemo() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection connection = DriverManager.getConnection(url);

            Statement statement = connection.createStatement();
            ResultSet results = statement.executeQuery("SELECT ProductName, Price FROM Products ORDER BY ProductName");

            while(results.next()) {
                System.out.println("Product Name: " + results.getNString("ProductName") + " Price: $" + results.getFloat("UnitPrice"));
            }

        } catch (ClassNotFoundException | SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
}

运行代码时,不会引发任何异常。.我只是在输出窗口中得到此异常:

run:
com.microsoft.sqlserver.jdbc.SQLServerDriver
BUILD SUCCESSFUL (total time: 0 seconds)

我正在使用NetBeans 7.2。请有人给我一个工作的例子。

编辑:

顺便说一下,对于连接字符串,您在其中看到了\\SQLExpress,我确实尝试将其删除并instanceName=SQLExpress改为使用..但这也没有任何效果。

编辑2:

好的,我从MS下载了用于MSSQL的最新JDBC驱动程序,并在其中引用了2个JAR文件。现在我得到以下输出:

run:
The connection to the host localhost, named instance SQLExpress failed.

Error: "java.net.SocketTimeoutException: Receive timed out".

Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  
For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
BUILD SUCCESSFUL (total time: 15 seconds)

Progress ..至少我们可以看到它现在正在尝试连接,但是有人能启发我上述错误吗?

编辑3:

解决了2个问题。一个是启用SQL Server浏览器,第二个是为SQL Server启用TCP / IP。谢谢@Vikdor现在,我收到此错误:

run:
The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
BUILD SUCCESSFUL (total time: 15 seconds)

我检查了Windows防火墙并添加了允许该端口的入站规则,但仍然出现上述错误。有任何想法吗?

编辑4:

在此链接中尝试过该解决方案:http :
//www.coderanch.com/t/306316/JDBC/databases/SQLServerException-TCP-IP-
connection-
host

不再在EDIT 3中出错。现在又得到另一个…

run:
Sep 21, 2012 11:33:16 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
This driver is not configured for integrated authentication. ClientConnectionId:577f359e-4774-45f3-96fb-588785911817
BUILD SUCCESSFUL (total time: 14 seconds)

现在对此感到非常厌倦。为什么是Java,为什么?认真地…我很高兴我主要使用.NET。好吧,当我找到解决方案时,我会将其发布在这里,以确保在其他人发疯之前,它可以帮助我…

编辑5:

我将目录路径放入PATH环境变量中。无效,因此我也将sqljdbc_auth.dll放入了JDK文件夹C:\Program Files\Java\jdk1.7.0_04\bin。解决了。


问题答案:

好的,这就是解决我的问题的方法:

  1. 从此处下载最新的MSSQL JDBC驱动程序:http : //msdn.microsoft.com/zh-cn/sqlserver/aa937724.aspx

  2. 在我的项目中引用了2个JAR文件: sqljdbc.jarsqljdbc4.jar (我不确定是否同时需要上述两个或一个。)

  3. 确保SQL Server Browser Windows服务正在运行

  4. 打开SQL Server配置管理器,然后转到 SQL Server网络配置” 下的 “ SQLEXPRESS协议” 。右键单击“ TCP / IP”, 然后选择“属性”。设置 启用 =是。

  5. 当您在那里时,点击 IP地址 标签,然后找到 IP全部 部分。将“ TCP端口” 设置为1433。

  6. sqljdbc_auth.dll 添加到 PATH环境变量 。以我 为例D:\ Java \ sqljdbc_4.0 \ enu \ auth \ x64

  7. sqljdbc_auth.dll 复制到您的 JDK目录 。在我的情况下: C:\ Program Files \ Java \ jdk1.7.0_04 \ bin

我希望这可以帮助别人。



 类似资料:
  • 本文向大家介绍Java使用Jdbc连接Oracle执行简单查询操作示例,包括了Java使用Jdbc连接Oracle执行简单查询操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java使用Jdbc连接Oracle执行简单查询操作。分享给大家供大家参考,具体如下: Java Jdbc 连接 Oracle 执行简单查询示例: 也可以使用防止SQL注入PreparedStatement方法

  • 我用泽西岛写了一个非常简单的例子。我从泽西岛网站下载了最新的jar文件到WEB-INF的lib文件夹中。我的课程和在下面。 当我提供URL我得到。 然而,当我使用Maven时,它是有效的。我用的是Eclipse开普勒,Glassfish 4服务器,Java 7。 非Maven版本我做错了什么? 谢谢。 类: Web.xml:

  • 本文向大家介绍nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例,包括了nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作。分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度

  • 主要内容:创建JDBC应用程序,示例代码本文章教程中将演示如何创建一个简单的JDBC应用程序的示例。 这将显示如何打开数据库连接,执行SQL查询并显示结果。 这个示例代码中涉及所有步骤,一些步骤将在本教程的后续章节中进行说明。 创建JDBC应用程序 构建JDBC应用程序涉及以下六个步骤 - 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用就足够了。 注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的

  • 本文向大家介绍MongoDB简单操作示例【连接、增删改查等】,包括了MongoDB简单操作示例【连接、增删改查等】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MongoDB简单操作。分享给大家供大家参考,具体如下: MongoDB 中默认的数据库为 test,连接后尝试以下操作 连接 插入数据:用过json的同学看到这格式相信不会陌生吧! 查: 修改: 再查: 删除: 再查: 经过上面

  • 本文向大家介绍PHP封装的简单连接MongoDB类示例,包括了PHP封装的简单连接MongoDB类示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP封装的简单连接MongoDB类。分享给大家供大家参考,具体如下: 1. 封装MongoDB类 2. 简单调用,insert数据。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP+MongoDB数据库操作技巧大全》、《PHP基