0

我在与 Java 和 SQL 2008 Express 的连接方面遇到了一些问题。我正在使用sun.jdbc.odbc.JdbcOdbcDriver驱动程序进行连接,并通过管理工具创建了我的 dsn,这是我正在使用的代码:

import java.sql.*;

public class JdbcFirstTry 
{
     public static void main(String args[]) throws SQLException
     {

         try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                Connection con = DriverManager.getConnection("jdbc:odbc:movie_archive_DSN");
                System.out.print("you made connection");
          }
          catch (Exception e)
          {
             e.printStackTrace();
          }
    }
}

这是我得到的错误:

未找到数据源名称且未指定默认驱动程序

谁能提供有关如何解决此错误的建议?还启用了 tcp/ip 并将端口设置为 1433。

我也尝试过这种方式,但一直出现超时错误:

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

      String connectionUrl = "jdbc:sqlserver://WALSER:1433;databaseName=MYSQLDATABASE;user=walser/kyle;password=brenna1020;";

      Connection con = DriverManager.getConnection(connectionUrl);

错误是:

与主机 WALSER 端口 1433 的 TCP/IP 连接失败。错误:“连接被拒绝:连接。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止."。

4

3 回答 3

0

要解决没有默认驱动程序,您需要指定数据库特定驱动程序的类型,例如

  1. oracle.jdbc.driver.OracleDriver甲骨文
  2. com;sybase.jdbc3.jdbc.SybDataSource对于 sybase

其次,请在连接调用中添加用户名和密码。

于 2013-07-15T20:59:46.700 回答
0

正如你所说,你的协议(TCP)被禁用,所以让我们用一些代码来激活它:)来自codeproject的源代码

--step 1: creating a login (mandatory)
create login login_to_system_after_injection with password='Thank$SQL4Registry@ccess';
GO
--step 2: enabling both windows/SQL Authentication mode
/*some server specific configurations are not stored in system (SQL)*/
--set the value to 1 for disabling the SQL Authentication Mode after . . .
exec xp_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2;
--step 3:getting the server instance name
declare @spath nvarchar(256);
--SQL SERVER V100 path, use SQL9 for V90
exec master..xp_regread N'HKEY_LOCAL_MACHINE',
                 N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL' ,N'SQL10',@spath output,no_output 
--step 4:preparing registry path
declare @insRegPath nvarchar(1024)=N'Software\Microsoft\Microsoft SQL Server\' + 
                                      @spath + '\MSSQLServer\SuperSocketNetLib\Tcp';
--step 5:enabling tcp protocol
exec xp_regwrite N'HKEY_LOCAL_MACHINE', @insRegPath, N'Enabled', REG_DWORD, 1 --generally tries to enable all addresses. NOT Recommended
--step 6:enabling remote access
--EXEC sys.sp_configure N'remote access', 1
GO
RECONFIGURE WITH OVERRIDE --reconfigure is required!
GO
--step 7:a system restart is required in order to enabling remote access.
--step 7.1:shutting down the server
shutdown
--After this command you need to start the server implicitly yourself.
--or just configure the Agent in order to start the server at any shutdown or failure

运行上述代码后,您需要重新启动服务器,还需要 sysadmin 规则 :)

如果上面的代码不起作用,请转到开始 -> 所有程序 -> Microsoft SQL Server 2008 -> 配置工具 -> SQL Server 配置管理器

然后从左侧窗格中选择“SQL Server 网络配置”,然后选择所需的实例,然后从右侧窗格中启用 TCP/IP,然后重新启动服务器

然后在Java应用程序中,您需要在下载库后更改类名和连接字符串,将其添加到类路径中,现在您的代码将是这样的

public class JdbcFirstTry 
    {
      public static void main(String args[]) throws SQLException
     {

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

                Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DatabaseName;integratedSecurity=true;");
                System.out.print("you made connection");
          }
          catch (Exception e)
          {

             e.printStackTrace();
         }

     }

    }

在上面的integratedSecurity=true 表示使用windows 帐户进行连接,但是很简单,您可以将用户名和密码与连接字符串添加为user=MyUserName;password=*****

最后,试试把结果告诉我,希望你能运行:)

于 2013-07-16T20:07:58.727 回答
0

如果您使用的是 Windows 7 64 位 转到

C:\Windows\SysWOW64 并搜索 odbcad32.exe

从那里你得到 ODBC 数据源管理员并创建 dsn

于 2016-05-10T12:23:50.990 回答