有关JDBC连接sql server数据库的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关JDBC连接sql server数据库的问题相关的知识,希望对你有一定的参考价值。

其实那6个基本步骤我都懂,就是编程的时候,最后老是连接不上。以下是我的代码,

有三个类。我用的是sql server数据库,还有我那个jtds-1.2要放在哪里,数据库要

进行什么修改么,是不是要进行什么更新升级之类才能被连接上啊?
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConnectionDemo
public static void main(String[] args) throws

ClassNotFoundException
try
//通过工具类获取数据库
Connection conn=DBUtil.getConnection();
System.out.println("连接成功");
//判断数据库是否处于打开状态
//System.out.println(conn.isClosed());
Statement stmt=conn.createStatement();
//获取查询结果集
ResultSet rs=stmt.executeQuery("Select sno,sNane

from student where sEntime=2008-9-1");
System.out.println("查询成功!");
while(rs.next())
System.out.println(rs.getString(1));

//关闭连接
DBUtil.closeConnection(conn);
DBUtil.closeResultSet(rs);
DBUtil.closeStatement(stmt);

catch(Exception e)
e.printStackTrace();




public class Constrant
//数据库连接信息
public static String DRIVER="net.sourceforge.jtds.jdbc.Driver";
public static String

URL="jdbc:jtds:sqlserver://localhost:1433;DatebaseName=stumanage2";
public static String USERNAME="sa";
public static String PASSWORD="";


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

public class DBUtil
public static Connection getConnection() throws SQLException
try
//指定驱动程序
Class.forName(Constrant.DRIVER);
//建立数据库连接
Connection conn=DriverManager.getConnection

(Constrant.URL,Constrant.USERNAME,Constrant.PASSWORD);
return conn;
catch(Exception e)
throw new SQLException("驱动错误或连接失败");



public static void closeStatement(Statement stmt)throws

SQLException
try
//关闭stmt
if(stmt!=null)
stmt.close();
catch(SQLException e)
throw new SQLException("关闭Statement失败!");



public static void closeResultSet(ResultSet rs)throws

SQLException
try
//关闭rs
if(rs!=null)
rs.close();
catch(SQLException e)
throw new SQLException("关闭ResultSet失败!");



public static void closeConnection(Connection conn)throws

SQLException
try
//关闭conn
if(conn!=null)
conn.close();
catch(SQLException e)
throw new SQLException("关闭Connection失败!");


package util;

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

public class SqlConn
public static Connection getConnection()
Connection conn = null;
try
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=db",
"sa", "1234");

catch (Exception e)
e.printStackTrace();

return conn;

public static void close(Connection conn)
if (conn!=null)
try
conn.close();
catch (SQLException e)
e.printStackTrace();



public static void main(String[] args)
System.out.println(getConnection());



ConnectionID:1 (测试结果,说明建立连接)
参考技术A 首先问题是:你用的sqlserver是哪个版本?2000还是2005?
二者在连接上不同很多,2000的话,看你用什么驱动,用sun.jdbc.odbc.JdbcOdbcDriver的驱动的话,不需要导入文件
用微软的驱动的话,要导入文件,导入文件的话,2000和2005要导入的文件不一样,然后就是你要在sql端设置好,2000要打好补丁
然后问题就是你的IDE,使用eclipse吧?Project->Properties->Java Build Path->Libraries->Add External JARs导入文件
应该就是这样
参考技术B 发错误代码 参考技术C tishi提示什么错误了

与 SQL Server 的 JDBC 连接:用户 x 登录失败 [重复]

【中文标题】与 SQL Server 的 JDBC 连接:用户 x 登录失败 [重复]【英文标题】:JDBC connection to SQL Server: login failed for user x [duplicate] 【发布时间】:2012-09-27 07:53:03 【问题描述】:

我正在尝试设置与 Sql Server 2008 的 JDBC 连接。我在 Sql Server 中创建了一个包含以下信息的数据库:

CREATE LOGIN xtest WITH PASSWORD = 'berenjenas7(((';  
GO  
CREATE USER samxtest FOR LOGIN xtest;  
GO  
GRANT SELECT TO samxtest;
GO  
GRANT INSERT TO samxtest;
GO  
GRANT UPDATE TO samxtest;
GO  
GRANT DELETE TO samxtest;
GO 

我从这里安装了 JDBC 驱动程序:http://www.microsoft.com/en-us/download/details.aspx?id=11774 我使用了这个链接中的 connectURL 类:http://msdn.microsoft.com/en-us/library/aa342339.aspx 为了测试连接

我在代码中保留了默认端口 1433。下图应该可以证明这确实是端口: 当然,我将连接字符串更改为:

String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=XTest;user=samxtest;password=berenjenas7(((";

我不明白有什么问题? 我得到的错误是:

com.microsoft.sqlserver.jdbc.SQLServerException: 用户登录失败 'samxtest'。 ClientConnectionId:2344af..... 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 在 com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254) 在 com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 connectURL.main(connectURL.java:18)

【问题讨论】:

是否为登录 xtest 创建用户 samxtest;与设置登录启用相同? @Sam 请查看此内容,可能是replicated 不知道是不是一样。但我做了一个测试,也试过这个:ALTER LOGIN xtest ENABLE; ALTER LOGIN xtest WITH PASSWORD = 'abcdefghijkl' 然后将连接字符串替换为 String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=XTest;user=xtest;password=abcde‌​ghijkl";但它仍然不起作用。 【参考方案1】:

误读:

确保 SQL Server 的身份验证模式为“混合模式(Windows 身份验证和 SQL Server 身份验证)”。

运行以下脚本来更改身份验证

LOGIN xtest ENABLE

ALTER LOGIN samxtest WITH PASSWORD = 'password'

【讨论】:

嗨,谢谢陌生人!我根本看不到混合模式,我目前在打开 Sql Server Management Studio 时有 2 个选项:Windows 身份验证和 Sql Server 身份验证,并且我每次都选择 Windows 身份验证,所以我使用服务器名称 =“本地”登录。我应该将其更改为混合,如果它不显示怎么办? 另外,samxtest(如果你检查我最初的问题)不是登录,它是用户。登录名为 xtest。我用 LOGIN xtest 尝试了你所说的(这在我对 swingNoobie 的第一条评论中有详细说明)。但不工作。 请通过检查服务器的属性和安全性来验证这一点,它应该处于“SQL Server 和 Windows 身份验证模式” 万岁!我只是这样做了,现在可以了!非常感谢,陌生人!你是英雄。 作为总结:我不知道为什么我无法连接到我创建的用户,所以 我为 LOGIN 分配了一个密码,如陌生人的回答中所述 再加上上面所建议的 我切换到 SQL Server 和 Windows 身份验证模式这一事实就成功了!

以上是关于有关JDBC连接sql server数据库的问题的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server JDBC 不适用于 Wildfly AS

Java Spring jdbc sql server连接错误

怎么连接sql server数据库

教你jdbc连接sql server数据库

jdbc——java连接sql server 过程

jdbc连接sql Server 数据库时用的数据库名是指实例名吗?