准备工作:下载相关jar包 如果链接sqlserver数据库
去微软下载官方jdbc驱动
下载 - JDBC Driver for SQL Server | Microsoft Docs
文中用了dom4j解析xml文件的方式添加链接属性
工具类源码
package studyByMyself;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/*
* 这个类用来提供jdbc的工具类,
* 需要在WebContent/WEB-INF/lib下导入dom4j和mysql、sqlserver等数据库的jar包
*/
public class jdbcUtils {// 声明四个参数
private static String driverclass;// 驱动
// 指定要连接的数据库包括协议名 包含ip地址,端口号,库名
private static String url;
private static String user;// 用户名
private static String password;// 密码
// 1.1私有化构造函数 ,外界无法创建对象
private jdbcUtils() {
}
static {// 在静态代码块中使用init()方法初始化4个参数
//只加载一次属性文件
init();
}
// 1.2提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接
public static Connection getConnection() {
try {
// 1.注册驱动
Class.forName(driverclass);
// 2.获取数据库连接
Connection coon = DriverManager.getConnection(url, user, password);
return coon;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// 1.3 提供公共的,静态的,close方法,用来释放资源
public static void close(ResultSet rs, Statement st, Connection conn) {
//释放结果集资源
//非空判断,防止空指针异常
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
rs = null;//手动置空
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
st = null;
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}
private static void init() {
try {
// 该方法读取server.xml中的数据,使用dom4j技术
SAXReader read = new SAXReader();
// xml文件路径web工程/src/JDBC.xml
Document doc = read.read("src/jdbc.xml");
// 读取根节点JDBC
Element JDBC = doc.getRootElement();
// 读取子节点util
Element util = JDBC.element("util");
// 获取util元素属性
// attributeValue 传入的值是:xml中属性值名字
driverclass = util.attributeValue("DriverClass");
url = (util.attributeValue("url"));
user = (util.attributeValue("user"));
password = (util.attributeValue("password"));
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
jdbc.xml文件
本文使用默认账户sa测试登录数据库,此处记得打开sqlserver的tcp/ip链接,sqlserver安装完毕是默认关闭该项的 如果想要连接mysql数据库 修改相关连接属性即可。
<?xml version="1.0" encoding="UTF-8"?>
<JDBC>
<util DriverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=test;encrypt=true;trustServerCertificate=true"
user="sa"
password="123456">
</util>
</JDBC>
学生实体类
package studyByMyself;
public class Student {
private String sno;
private String sname;
private int age;
private String sex;
private String sdept;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSdept() {
return sdept;
}
public void setSdept(String sdept) {
this.sdept = sdept;
}
@Override
public String toString() {
return "Student [sno=" + sno + ", sname=" + sname + ", age=" + age + ", sex=" + sex + ", sdept=" + sdept + "]";
}
}
测试类
package studyByMyself;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/**
*
* @author whd
*
*/
public class Test {
public static void main(String[] args) {
PreparedStatement ps = null;
Connection conn = jdbcUtils.getConnection();
ArrayList<Student> list = new ArrayList<Student>();
try {
ps = conn.prepareStatement("select* from s");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Student stu = new Student();
stu.setSno(rs.getString("sno"));
stu.setSname(rs.getString("sname"));
stu.setSex(rs.getString("age"));
stu.setSdept(rs.getString("dept"));
stu.setAge(rs.getInt("age"));
list.add(stu);
//System.out.println(stu);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
jdbcUtils.close(null, ps, conn);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
运行截图