一、JDBC简介
SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。
二、JDBC使用
1、加入相关jar包
mysql-connector-java-5.1.7.rar
2、java代码中使用步骤
- 注册驱动
- 建立连接
- 创建statement
- 执行sql ,得到ResultSet
- 遍历结果集
可以把一些参数、数据库用户名、密码等用一个配置文件存起来,方便修改。
jdbc.properties文件格式:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/student
name=root
password=root
加载jdbc.properties:
//1. 创建一个属性配置对象
Properties properties = new Properties();
InputStream is = new FileInputStream("jdbc.properties");
//使用类加载器,去读取src底下的资源文件。 后面在servlet
// InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//2. 导入输入流。
properties.load(is);
//3. 读取属性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
连接数据库:
Class.forName(driverClass); //注册mysql-jdbc
conn = DriverManager.getConnection(url, name, password); //链接
执行sql语句:
(1)不安全的做法:
如果字符串里含有sql关键词,可能该字符串的那部分就会当作关键词而被sql执行,就会引起一些麻烦(比如下面的or)
Statement st = conn.createStatement();
String sql = "select * from t_stu where name='123 or 1=1'";
rs= st.executeQuery(sql);
(2)安全的做法:
PrepareStatement ps;
String sql = "insert into t_user values(null , ? , ?)";
ps = conn.prepareStatement(sql);
//给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
ps.setString(1, userName);
ps.setString(2, password);
遍历结果集:
while(rs.next()){
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(name+" " + age);
}
使用完后释放资源:
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
//同理:
closeSt(st);
closeConn(conn);
三、使用单元测试,测试代码
-
添加junit的支持。
右键工程 --- add Library --- Junit --- Junit4
-
在方法的上面加上注解 , 其实就是一个标记。
@Test
public void testQuery() {
...
} -
光标选中方法名字,然后右键执行单元测试。 或者是打开outline视图, 然后选择方法右键执行。
四、Dao模式
Data Access Object 数据访问对象
封装好数据库连接、查询等,声明与实现分开来。
ps:平时也可以把这些东西封装成工具类