如何使用JDBC连接到SQL Server 2008数据库?

54

我在本地计算机上安装了MSSQL 2008,并且我的Java应用程序需要连接到MSSQL数据库。我对MSSQL还很陌生,希望能获得一些关于为我的Java应用程序创建用户登录和通过JDBC进行连接的帮助。到目前为止,我尝试为我的应用程序创建用户登录并使用以下连接字符串,但根本无法工作。任何帮助和提示将不胜感激。

jdbc:jtds:sqlserver://127.0.0.1:1433/dotcms 
username="shuxer"  password="itarator"

试着使用Hibernate。如果你还没有听说过它,那现在是时候了解一下这个工具了。它是被广泛应用的对象关系映射(ORM)库。 - Artsiom Anisimau
请提供您尝试连接的代码,并提供所遇到的异常或错误。 - developer
9个回答

75

使用JDBC有两种主要方式-使用Windows认证和SQL认证。 SQL认证可能是最简单的。您可以做的是:

String userName = "username";
String password = "password";

String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB";

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, userName, password);
在将sqljdbc4.jar添加到构建路径后,对于Windows身份验证,您可以执行以下操作:
String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url);

然后将sqljdbc_auth.dll文件的路径添加为VM参数(仍需在构建路径中包含sqljdbc4.jar)。

如果您需要更多详细信息,请查看这里提供的简短、逐步指南,展示了如何使用jTDS和JDBC从Java连接到SQL Server。希望它有所帮助!


请注意,jar文件应该放在类路径中。 - FindOutIslamNow

34

你可以使用这个

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

public class ConnectMSSQLServer
{
   public void dbConnect(String db_connect_string,
            String db_userid,
            String db_password)
   {
      try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         Connection conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
         System.out.println("connected");
         Statement statement = conn.createStatement();
         String queryString = "select * from sysobjects where type='u'";
         ResultSet rs = statement.executeQuery(queryString);
         while (rs.next()) {
            System.out.println(rs.getString(1));
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args)
   {
      ConnectMSSQLServer connServer = new ConnectMSSQLServer();
      connServer.dbConnect("jdbc:sqlserver://<hostname>", "<user>",
               "<password>");
   }
}

8

我也在使用mssql server 2008和jtds。在我的情况下,我使用以下连接字符串,它有效。

Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://<your server ip     
address>:1433/zacmpf", userName, password );
Statement stmt = con.createStatement();

7

如果你连接遇到问题,可能的原因是你还没有在1433端口上启用TCP/IP监听器。快速执行“netstat -an”命令将告诉你是否正在监听。默认情况下,在安装后SQL服务器不会启用此功能。

此外,你需要为“sa”账户设置密码,并启用“sa”账户(如果打算使用该账户进行连接)。

显然,这也意味着你需要在MSSQL节点上启用“混合模式身份验证”。


3
尝试使用以下方式:jdbc:jtds:sqlserver://127.0.0.1/dotcms; instance=instanceName 我不知道您使用的是哪个版本的mssql,如果是express版,则默认实例为sqlexpress。
不要忘记检查SQL Server Browser服务是否正在运行。

3

您可以尝试配置 SQL 服务器:

  1. 步骤 1:打开 SQL Server 20xx 配置管理器
  2. 步骤 2:在 SQL Server 配置中点击“SQL Server网络配置”,然后右键单击 TCP/IP,选择“属性”
  3. 步骤 3:点击“IP地址”选项卡,编辑所有 TCP。端口为 1433

注意: 所有的TCP端口都是1433。最后,重新启动服务器。


2

连接到SQL Server的简单Java程序。

注意:您需要将sqljdbc.jar添加到构建路径中

// localhost:本地计算机充当服务器

// 1433:SQL默认端口号

//用户名:sa

//密码:使用安装SQL Server管理工具时使用的密码。在我的情况下,它是'root'

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

    public class Conn {
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {

            Connection conn=null;
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
                conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=company", "sa", "root");

                if(conn!=null)
                    System.out.println("Database Successfully connected");

            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }

0

试试这个

 Class.forName( "net.sourceforge.jtds.jdbc.Driver" );

String url ="Jdbc:jtds:sqlsever://ip/instanceName;instance=instanceName;databseName=dbName;user=yourUser;password=yourpass;";

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - jasie

0

Try this.

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class SQLUtil {

public void dbConnect(String db_connect_string,String db_userid, String db_password) {

try {

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     Connection conn = DriverManager.getConnection(db_connect_string,
              db_userid, db_password);
     System.out.println("connected");
     Statement statement = conn.createStatement();
     String queryString = "select * from cpl";
     ResultSet rs = statement.executeQuery(queryString);
     while (rs.next()) {
        System.out.println(rs.getString(1));
     }
  } catch (Exception e) {
     e.printStackTrace();
  }    }

public static void main(String[] args) {

SQLUtil connServer = new SQLUtil();

connServer.dbConnect("jdbc:sqlserver://192.168.10.97:1433;databaseName=myDB", "sa", "0123");

}

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接