在安装完SQL Server 2008以后,接下来要做的就是用Java实现与SQL的连接。一开始在网上找了篇文章,是用 com.sun.rowset.CachedRowSetImpl 这个类来实现的。这个类虽然在oracle上可以找到API,但是死活找不到下载的地方,而我eclipse里面又没有,花了好几天还是不行,后来换了种方法,是用JDBC来实现的。
首先需要做的是下载微软的JDBC_DRIVER。可以去官网下:
http://msdn.microsoft.com/en-us/sqlserver/aa937724 。
下载完之后放到自己制定的文件夹里解压备用。里面有2个,一个是sqljdbc.jar 还有一个是sqljdbc4.jar 我的JRE是1.8.0的所以用后一个。
首先需要做的是下载微软的JDBC_DRIVER。可以去官网下:http://msdn.microsoft.com/en-us/sqlserver/aa937724 。下载完之后放到自己制定的文件夹里解压备用。里面又2个,一个是sqljdbc.jar 还有一个是sqljdbc4.jar 我的JRE是1.8.0的所以用后一个。
接下来是打开SQL配置器进行配置。要打开SQL配置器,可以开始->Microsoft SQL Server 2008->配置工具->Sql Server 配置管理器。 我打开之后有一个问题,就是Sql Server服务一栏右边显示的是sqlserver服务远程过程调用失败 这个问题我后来解决了,原因是我之前不知什么原因装了sql server 2012而现在装的是2008版,只要卸载2012 express localdb就行。如图所示
卸载掉之后就可以正常使用。
现在开始正常的配置。
SQL2000的默认端口是1433,所以只要开启端口就能连得上,但08的端口据说是动态的,具体的本人也不清楚,就是因为这个端口我也被整了2天,最后终于连上了
打开配置器:
将IP ALL的TCP动态端口(默认1163)改为1433,不改也行,因为大部分人的习惯是用默认的1433,在IP2已启用选择——是,确定。
同样的方法,开启客户端的TCP/IP,端口也为1443,如图:
这里我碰到了一个问题。由于我电脑装了很多东西(比如说虚拟机)所以显示了很多IP,其他的不用管,只要对127.0.0.1那个IP和IP ALL进行调节就行了。
调整完以后要重启sql server服务才能生效,重启方法见http://book.51cto.com/art/200909/154562.html
然后在DOS命令中输入测试 telnet 127.0.0.1 1433,
如果结果只有一个光标在闪动,那么就说明127.0.0.1 1433端口已经打开。
如果出现连接主机端口1433没打开,久要换端口。
这里我一开始telnet指令用不了,解决方案见http://www.cr173.com/html/18697_1.html
现在进入正题。启动eclipse,创建java项目,导入sqljdbc4.jar,然后建一个javaConSQL的类,复制如下代码
(关于导入的方法,见http://bbs.csdn.net/topics/60172847)
import java.sql.*;
public class javaConSQL{
public static void main(String[] args) {
String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎
String connectDB="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=tempdb";//数据源
try{
Class.forName(JDriver);//加载数据库引擎,返回给定字符串名的类
}catch(ClassNotFoundException e){ //e.printStackTrace();
System.out.println("加载数据库引擎失败");
System.exit(0);
}
System.out.println("数据库驱动成功");
try{
String user="sa";
String password="admin";
Connection con=DriverManager.getConnection(connectDB,user,password);//连接数据库对象
System.out.println("连接数据库成功");
Statement stmt=con.createStatement();//创建SQL命令对象
//创建表
System.out.println("开始创建表");
String query="create table TABLE1(ID NCHAR(2),NAME NCHAR(10))";//创建表SQL语句
stmt.executeUpdate(query);//执行SQL命令对象
System.out.println("表创建成功");
//输入数据
System.out.println("开始插入数据");
String a1="INSERT INTO TABLE1 VALUES('1','旭哥')";//插入数据SQL语句
String a2="INSERT INTO TABLE1 VALUES('2','伟哥')";
String a3="INSERT INTO TABLE1 VALUES('3','张哥')";
stmt.executeUpdate(a1);//执行SQL命令对象
stmt.executeUpdate(a2);
stmt.executeUpdate(a3);
System.out.println("插入数据成功");
//读取数据
System.out.println("开始读取数据");
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1");//返回SQL语句查询结果集(集合)
//循环输出每一条记录
while(rs.next()){
//输出每个字段
System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME"));
}
System.out.println("读取完毕");
//关闭连接
stmt.close();//关闭命令对象连接
con.close();//关闭数据库连接
}
catch(SQLException e){
e.printStackTrace();
//System.out.println("数据库连接错误");
System.exit(0);
}
}
}
运行,可得到结果