第一篇:Java 通过 JDBC 分别采用混合验证模式和 Windows 身份验证模式连接 SQL Server 2008 或 2005 的连接实例
Java 通过 JDBC 分别采用混合验证模式和 Windows 身份验证模式连接 SQL Server 2008 或 2005 的连接实例
开场白:由于这学期开始学习数据库,这两天便在自己的电脑上折腾了起来,经过一天不断地失败与摸索,在百度与谷歌的帮助下,以及各个论坛博客的经验分享,使得我最终使用
JDBC 分别在混合验证模式和 Windows 身份验证模式下连接SQL Server 2008成功,我在这里总结一下连接的具体过程与心得与大家分享!如有错误之处希望大家能够指出,予以纠正。
一、混合登录模式(SQL Sever 和 Windows 身份验证模式)
这种是 SQL Server 经典的连接数据库的方法,如果数库没有配置错误,连接应该很顺利。以下是 Java 源代码:
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;
publicclass SqlServerConnection02 { publicstaticvoid main(String[] args){ String dbDriver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;// SQL数据库引擎 String dbUrl = “jdbc:sqlserver://localhost:1433;DatabaseName=Test”;// 数据源
try { Class.forName(dbDriver);// 加载数据库引擎,返回给定字符串名的类
} catch(ClassNotFoundException e){ // e.printStackTrace();
System.out.println(“加载数据库引擎失败”);
} System.exit(0);System.out.println(“数据库驱动成功”);
try { String username = “sa”;String password = “sqlserveradmin”;//此处输入你的数据库的“sa”密码 Connection conn = DriverManager.getConnection(dbUrl, username, password);// 连接数据库对象
// 创建表
System.out.println(“开始创建表”);String sqlCreate = “DROP TABLE TABLE1;create table TABLE1(ID System.out.println(”连接数据库成功“);Statement stmt = conn.createStatement();// 创建SQL命令对象
NCHAR(2),NAME NCHAR(10))”;// 创建表SQL语句
// 输入数据
System.out.println(“开始插入数据”);String a1 = “INSERT INTO TABLE1 VALUES('1','张三')”;// 插入数 stmt.executeUpdate(sqlCreate);// 执行SQL命令对象 System.out.println(“表创建成功”);据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(“开始读取数据”);ResultSetrs = stmt.executeQuery(“SELECT * FROM TABLE1”);// 返回SQL语句查询结果集(集合)
}
}
// 关闭连接 rs.close();stmt.close();// 关闭命令对象连接 conn.close();// 关闭数据库连接
// 循环输出每一条记录 while(rs.next()){
} System.out.println(“读取完毕”);// 输出每个字段
System.out.println(rs.getString(“ID”)+ “t”
+ rs.getString(“NAME”));} catch(SQLException e){
} e.printStackTrace();// System.out.println(“数据库连接错误”);System.exit(0);运行结果如图:
二、Windows 身份验证模式下的连接代码:
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;
publicclassSqlServerConnection { publicstaticvoid main(String[] args){ String dbDriver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;// SQL数据库引擎 String dbUrl = “jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Test”;// 数据源
try { Class.forName(dbDriver);// 加载数据库引擎,返回给定字符串名的类
} catch(ClassNotFoundException e){ // e.printStackTrace();
System.out.println(“加载数据库引擎失败”);
} System.exit(0);System.out.println(“数据库驱动成功”);try { Connection conn = DriverManager.getConnection(dbUrl);// 连接数据库对象
// 创建表
System.out.println(“开始创建表”);String sqlCreate = “DROP TABLE TABLE2;CREATE TABLE TABLE2(ID System.out.println(”连接数据库成功“);Statement stmt = conn.createStatement();// 创建SQL命令对象
NCHAR(2),NAME NCHAR(10))”;// 创建表SQL语句
// 输入数据
System.out.println(“开始插入数据”);String a1 = “INSERT INTO TABLE2 VALUES('1','张三')”;// 插入数 stmt.executeUpdate(sqlCreate);// 执行SQL命令对象 System.out.println(“表创建成功”);据SQL语句
String a2 = “INSERT INTO TABLE2 VALUES('2','李四')”;String a3 = “INSERT INTO TABLE2 VALUES('3','王五')”;stmt.executeUpdate(a1);// 执行SQL命令对象 stmt.executeUpdate(a2);stmt.executeUpdate(a3);System.out.println(“插入数据成功”);
// 读取数据
System.out.println(“开始读取数据”);ResultSetrs = stmt.executeQuery(“SELECT * FROM TABLE2”);// 返回SQL语句查询结果集(集合)
}
运行结果如图:
}
// 关闭连接 rs.close();stmt.close();// 关闭命令对象连接 conn.close();// 关闭数据库连接
// 循环输出每一条记录 while(rs.next()){
} System.out.println(“读取完毕”);// 输出每个字段
System.out.println(rs.getString(“ID”)+ “t”
+ rs.getString(“NAME”));} catch(SQLException e){
} e.printStackTrace();// System.out.println(“数据库连接错误”);System.exit(0);
仔细观察上面两段代码,可以发现,两点不同,一个是数据库连接地址即dbUrl另一个是与其对应生成的 Connection 对象。
实际上使用Windows集成的安全性验证在访问数据库时具有很多优势:安全性更高、访问速度更快、减少重新设计安全架构的工作、可以硬编码连接字符串等,还是很值得使用的。有兴趣的可以试一下。