为了使用JAVA对数据库进行操作,需要使用JDBC作为驱动,进行连接。
这次实验的平台是SQL Server 2008 R2.
首先,需要下载适合的JDBC驱动,因为我装的是2008R2,所以我选择用最新的4.0版本的驱动,而且JDK最好是5.0 或者 6.0系列的,7.0系列可能有问题。
下载好后,安装后会发现是一个解压包,解压到一个临时文件夹即可,最好是解压到默认位置。
下图是我的文件路径,以及解压后的文件结构,其中本来有两个jar的,我把一个删除了,只留下jdbc4这个jar包。
下面是进行简单的配置:
1、在环境变量CLASSPATH中加上sqljdbc4.jar包的路径,记得要在前面加分号隔开 ;C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\chs\sqljdbc4.jar
2、在java的安装路径 C:\Program Files\Java\jre6\lib\ext 也就是ext文件下加入sqljdbc4.jar包
这样就可以不必在每次需要用到jdbc的时候都去引入这个jar包到项目中.
3、配置SQL SERVER服务器
a.打开SQL Server Configuration Manager -> SQLEXPRESS的协议 -> TCP/IP
b.右键单击启动TCP/IP
c.双击进入属性,把IP地址中的IP all中的TCP端口设置为1433
d.重新启动SQL Server 2005服务中的SQLEXPRESS服务器
e.关闭SQL Server Configuration Manager
4、在上面jdbc的解压文件中,可以看到有auth这个文件夹,找到sqljdbc_auth.dll文件,并将该文件拷贝到 C:\WINDOWS\system32 供系统调用。
这样就配置完成了,可以来写测试代码了,写之前最好是可以重启一下机器,保证对SQLSERVER的配置会生效。
下面是一段测试代码
import java.sql.*;
public class JdbcConnect {
/*
* 程序要先运行建表,此时将插入数据部分注释,然后再运行一次程序,这一次将建表部分注释,运行插入部分,此时会在控制台输出插入表中的数据
* 至于为什么两次不能一次性完成,暂时还没搞懂
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载驱动
String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=sample"; //连接到sample数据库
String userName = "sa"; //用户名
String userPsw = "02270303"; //密码
Connection dbConnect;
try {
Class.forName(driverName);
dbConnect = DriverManager.getConnection(dbURL,userName,userPsw);
Statement s = dbConnect.createStatement();
// //建表
// String createTable = "create table Stu(Name char(15),Number char(16))";
// s.executeQuery(createTable);
//插入数据
dbConnect = DriverManager.getConnection(dbURL,userName,userPsw);
PreparedStatement prestatement;
String data_1 = "insert into Stu(Name,Number) values(?,?)";
prestatement = dbConnect.prepareStatement(data_1);
prestatement.setString(1,"wangjiakai");
prestatement.setString(2,"20102100227");
prestatement.executeUpdate();
String data_2 = "insert into Stu(Name,Number) values(?,?)";
prestatement = dbConnect.prepareStatement(data_2);
prestatement.setString(1,"xiaoming");
prestatement.setString(2,"20102100999");
prestatement.executeUpdate();
//检索
String query = "select * from Stu";
ResultSet set = s.executeQuery(query);
while(set.next())
{
System.out.println("Name "+ set.getString(1));
System.out.println("Number "+ set.getString(2));
}
s.close();
prestatement.close();
dbConnect.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我操作的数据库是一个叫做sample的数据库,在SQLSERVER中新建的。就像我代码中所说的,建表的操作和插入的操作不能同时进行,不过我们一般使用JDBC一般都是在已建好的表中进行操作,所以建表还是在SQLSERVER中建会比较好,只写了简单的插入和检索操作,重点还是开头的连接操作,连接完成后,就没什么大问题了。
个人比较喜欢用上面这种URL的方式进行连接,当然也可以用其他方式去连接,至于其中的差别,我并没有去探究。