在JAVA中如何连接SQL Server数据库

 
这几天终于学到了用JAVA联数据库,在网上找了有关方法以与JAVA爱好者共享。

用Java连接SQLServer2000数据库有多种方法,下面介绍其中最常用的两种(通过JDBC驱动连接数据库)。

1.通过Microsoft的JDBC驱动连接。此JDBC驱动共有三个文件,分别是mssqlserver.jar、msutil.jar和msbase.jar,可以到微软的网站去下载(http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en),如果你下载的是setup.exe,还需要安装它,安装后会生成上面的三个jar文件。此JDBC驱动实现了JDBC 2.0。
驱动程序名称:com.microsoft.jdbc.sqlserver.SQLServerDriver(即下面的classforname
数据库连接URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname(即下面的url

2. 通过JTDS JDBC Driver连接SQLServer数据库,此驱动的文件名为jtds-1.2.jar,下载路径为(http://sourceforge.net/project/showfiles.php?group_id=33291),此驱动支持MicrosoftSQL Server (6.5, 7.0, 2000 和2005) 和Sybase,并且实现了JDBC3.0,是免费的。
驱动程序名称:net.sourceforge.jtds.jdbc.Driver(即下面的classforname
数据库连接URL:jdbc:jtds:sqlserver://localhost:1433/dbname(即下面的url

JDBC连接SQL Server数据库的Bean代码网上大把的有,下面摘录其中的一部分:(请将localhost和1433改成你实际应用中的SQLServer服务器地址和端口号,dbname改成你实际的数据库名

import java.sql.*;
public class DatabaseConn {

 private Connection conn;
 private Statement stmt;
 private String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname";
 privateString classforname ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
 private String uid = "sa";
 private String pwd = "password";
 
 public DatabaseConn(){}
 
 
 public Connection getConnection()
 {
  try
  {
   Class.forName(classforname);
   if (conn ==null || conn.isClosed())
    conn= DriverManager.getConnection( url, uid, pwd);
  }
  catch (ClassNotFoundExceptionex)
  {
   ex.printStackTrace();
  }
  catch (SQLException ex)
  {
   ex.printStackTrace();
  }
  returnconn;  
 }

}

当然,在做上述工作之前,你得先检查自己的SQL Server设置是否有问题,步骤如下:

首先打开“命令行窗口”,也就是MS-Dos窗口,输入
telnet localhost 1433  (当然,用SQLServer所在的服务器地址替代localhost,端口改为SQL Server的实际端口,默认是1433)

如果成功了,表明你的SQLServer是可以连上的,如果没成功(一般是对于Win2003或者WinXPSP2),请进入控制面板,打开“管理工具”中的“服务”,启动“SQLSERVERAGENT”服务(当然,你也可以打上SQLServer的SP3补丁包),再继续上面的操作,应该会成功的。

其次,检查你的用户名和密码是否能登陆SQLServer服务器,当然,最直接的办法就是打开SQL Server的“查询分析器”,输入用户名和密码,点击确定

如果成功了,表明你的SQL Server登陆设置没问题,如果失败了,请打开SQLServer的“企业管理器”,在你注册的SQL Server服务器上(也就是左边的“SQLServer组”下面的那东东)也就是点击右键,选择“属性”,在“SQL Server(属性)配置”对话框中选择“安全性”,将身份验证设为“SQLServer和Windows(S)”,再用查询分析器测试一次,如果还连接不上,就去检查你的用户名和密码是否有误。重复测试,直至成功。

(注:在使用过程一定要注意有以下:(1).将JDBC驱动共有三个文件,分别是mssqlserver.jar、msutil.jar和msbase.jar复制到C:\Java\jdk1.5.0_04\jre\lib\ext目录下,否则出现:找不到驱动

(2).一定在装sp3或者sp4,否则出现:什么socketesteblishing is error

)


下载 完成后,是个exe文件,点击运行,会提示你选择解压目录.

解压完成后,进入 <你解压到得目录>\sqljdbc_3.0\chs,里边有两个我们需要的东东

一个是:sqljdbc.jar,另外一个是sqljdbc4.jar

这里使用sqljdbc4.jar

首先配置sa身份验证:

由于安装sqlServer2008时是以windows身份验证安装的,并没有为sqlServer2008添加sqlServer身份用户,因此首先添加用户:

打开Microsoft SQL Server Managerment Studio并以windows验证方式登录,左侧的对象资源管理器->安全性->登录名,右击sa->属性,为sa用户添加密码,选择sqlServer身份验证,在"状态"选项中授予连接到数据库和登录启用.右击对象资源管理器的根节点,选择属性->安全性->sqlServer和windows身份验证模式,这样就为sql server 2008创建了以sql server身份验证的用户sa.

在java代码中用两种方式连接sqlserver2008数据库,一种是sa身份验证模式,另外一种是混合身份验证模式:

第一种:sa身份验证模式,用下边java代码的url

  1. import java.sql.Connection;    
  2. import java.sql.DriverManager;    
  3. import java.sql.ResultSet;    
  4. import java.sql.Statement;    
  5.     
  6. public class Test {    
  7.     
  8.     public static void main(String args[]) {    
  9.         // Create a variable for the connection string.  
  10.     
  11.         String url = "jdbc:sqlserver://127.0.0.1:1368;databaseName=mydb;user=sa;password=qiaoning";//sa身份连接    
  12.     
  13.         String url2 = "jdbc:sqlserver://127.0.0.1:1368;databaseName=mydb;integratedSecurity=true;";//windows集成模式连接    
  14.     
  15.         // Declare the JDBC objects.    
  16.         Connection con = null;    
  17.         Statement stmt = null;    
  18.         ResultSet rs = null;    
  19.     
  20.         try {    
  21.             // Establish the connection.    
  22.             System.out.println("begin.");    
  23.             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");    
  24.             con = DriverManager.getConnection(url);    
  25.             System.out.println("end.");    
  26.     
  27.             // Create and execute an SQL statement that returns some data.    
  28.             String SQL = "SELECT TOP 10 * FROM aud_t_basis";    
  29.             stmt = con.createStatement();    
  30.             rs = stmt.executeQuery(SQL);    
  31.     
  32.             // Iterate through the data in the result set and display it.    
  33.             while (rs.next()) {    
  34.                 System.out.println(rs.getString(4) + " " + rs.getString(6));    
  35.             }    
  36.         }    
  37.     
  38.         // Handle any errors that may have occurred.    
  39.         catch (Exception e) {    
  40.             e.printStackTrace();    
  41.         }    
  42.     
  43.         finally {    
  44.             if (rs != null)    
  45.                 try {    
  46.                     rs.close();    
  47.                 } catch (Exception e) {    
  48.                 }    
  49.             if (stmt != null)    
  50.                 try {    
  51.                     stmt.close();    
  52.                 } catch (Exception e) {    
  53.                 }    
  54.             if (con != null)    
  55.                 try {    
  56.                     con.close();    
  57.                 } catch (Exception e) {    
  58.                 }    
  59.         }    
  60.     }    
  61. }    

 第二种:混合身份验证模式,用上边java代码的url2.

在集成模式下需要如下操作:

找到你刚才的解压目录:进入sqljdbc_3.0\chs\auth\x64,我的是64位系统,如果是32位就x86,将一个名为sqljdbc_auth.dll的文件拷贝到:C:\Windows\System32下,就好了

最后就是sqlserver2008用的是动态端口,需要你配置一下:

打开配置工具->SQLServer配置管理器->SQLServer网络配置->MSSQLSERVER的协议->TCP/IP启用,把TCP动态端口中的0都删掉,留空;然后把列表拉到最下边(IPALL),配置一个固定端口,以后你连接数据库就用这个端口就可以了:如下图



 这里我用的是1368,数据库重启后,就可以用上面的程序连接了.



  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值