1. 连接SQL Server数据库
在JavaWeb的开发过程中,如何连接SQL Server数据库呢?下面将给大家详细介绍。
1.1 导入SQL Server JDBC驱动包
首先,需要将SQL Server JDBC驱动包导入项目中。可以在官网下载SQL Server JDBC驱动,在下载页面选择"Microsoft JDBC Driver for SQL Server"即可下载。
下载好的驱动包需要解压,然后在项目的lib目录下创建一个文件夹,将解压后的驱动包拷贝到该文件夹下,然后在项目中添加驱动包。
1.2 编写连接数据库的代码
在Java中连接SQL Server数据库,需要使用Java提供的JDBC API,通过JDBC API我们可以创建一个连接到数据库的Connection对象,然后通过执行SQL语句执行增删改查等操作。
下面是一个简单的连接SQL Server数据库的示例代码:
import java.sql.*;
public class TestSQLServer {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String password = "123456";
Connection conn = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
if(conn != null) {
System.out.println("连接成功!");
}else {
System.out.println("连接失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
代码解释:
第4行:指定数据库连接串,其中localhost为SQL Server实例名称,1433为端口号,test为数据库名称;
第5-7行:指定数据库连接的用户名和密码;
第8行:创建一个Connection对象,用于连接到SQL Server数据库;
第10行:使用Class.forName()方法加载SQL Server JDBC驱动;
第11行:使用DriverManager.getConnection()方法创建一个Connection对象;
第12-16行:判断连接结果是否为null,如果为null则连接失败,否则连接成功;
第17-23行:捕获ClassNotFoundException和SQLException异常,最后在finally块中关闭连接。
2. 执行SQL语句
连接SQL Server数据库成功之后,就可以通过执行SQL语句来进行增删改查等操作了。
2.1 查询数据
查询数据是最常见的操作,下面是一个简单的查询操作实例:
public class TestSQLServer {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String password = "123456";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
String sql = "select * from student";
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getString("id") + "," + rs.getString("name") + "," + rs.getString("age"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
代码解释:
第11行:创建一个Statement对象,用于执行SQL语句;
第12行:定义查询语句,这里查询student表的所有数据;
第13行:使用Statement.executeQuery()方法执行查询,返回一个ResultSet对象;
第14-17行:使用ResultSet对象的next()方法循环输出查询结果集中的数据;
第18-28行:在finally块中关闭资源。
2.2 添加数据
添加数据需要使用PreparedStatement对象,示例代码如下:
public class TestSQLServer {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String password = "123456";
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
String sql = "insert into student (name, age) values (?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
ps.setInt(2, 18);
int count = ps.executeUpdate();
if(count > 0) {
System.out.println("成功添加" + count + "条记录!");
}else {
System.out.println("添加记录失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(ps != null) {
ps.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
代码解释:
第13行:定义插入语句,使用?占位符代替具体的值;
第14行:使用Connection.prepareStatement()方法创建一个PreparedStatement对象;
第15-16行:使用PreparedStatement.setString()和setInt()方法设置占位符的值;
第17行:使用PreparedStatement.executeUpdate()方法执行更新操作,返回更新的记录数;
第18-21行:判断更新结果,输出提示信息;
第22-29行:在finally块中关闭资源。
2.3 修改数据
修改数据与添加数据类似,示例代码如下:
public class TestSQLServer {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String password = "123456";
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
String sql = "update student set age = ? where name = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, 20);
ps.setString(2, "Tom");
int count = ps.executeUpdate();
if(count > 0) {
System.out.println("成功修改" + count + "条记录!");
}else {
System.out.println("修改记录失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(ps != null) {
ps.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
代码解释:
第13行:定义更新语句,使用?占位符代替具体的值;
第14行:使用Connection.prepareStatement()方法创建一个PreparedStatement对象;
第15-16行:使用PreparedStatement.setInt()和setString()方法设置占位符的值;
第17行:使用PreparedStatement.executeUpdate()方法执行更新操作,返回更新的记录数;
第18-21行:判断更新结果,输出提示信息;
第22-29行:在finally块中关闭资源。
2.4 删除数据
删除数据与修改数据类似,示例代码如下:
public class TestSQLServer {
public static void main(String[] args) {
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";
String password = "123456";
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
String sql = "delete from student where name = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, "Tom");
int count = ps.executeUpdate();
if(count > 0) {
System.out.println("成功删除" + count + "条记录!");
}else {
System.out.println("删除记录失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
if(ps != null) {
ps.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
代码解释:
第13行:定义删除语句,使用?占位符代替具体的值;
第14行:使用Connection.prepareStatement()方法创建一个PreparedStatement对象;
第15行:使用PreparedStatement.setString()方法设置占位符的值;
第16行:使用PreparedStatement.executeUpdate()方法执行更新操作,返回更新的记录数;
第17-20行:判断更新结果,输出提示信息;
第21-28行:在finally块中关闭资源。
3. 总结
本文详细介绍了JavaWeb如何连接SQL Server数据库,包括导入SQL Server JDBC驱动包、编写连接数据库的代码、执行SQL语句等方面。虽然SQL Server数据库与其他数据库的连接方式略有不同,但是掌握了基本的连接和操作方法之后,就可以很容易地完成JavaWeb开发中对SQL Server数据库的访问。