SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC。这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库。
如下图所示:
2.1 搭建实验环境
A. 启动mysql数据库,即开启mysql/bin/mysqld.exe。
B. 创建数据库,并创建所需的表。如下图(在创建数据库和表的时候请对其编码设置为utf-8编码否则后期容易出错):

2.2 创建一个web工程,并导入数据库驱动包。

2.3 编写javabean,即PO对象又叫持久化对象,此对象的成员属性与数据库的列一一对应,本例中数据库与userName和passWd两列,则PO对象中也应该有这两个成员属性。

UserPO.java
package po;
public class UserPO {
private String userName;
private String passWd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWd() {
return passWd;
}
public void setPassWd(String passWd) {
this.passWd = passWd;
}
}
解析: javabean对象中成员属性应该是private的,且必须要有get()和set()方法。
2.4 创建DAO包,专门用于操作数据(即与数据库互动,进行增删改差操作),一般有接口类和实现类。

package dao;
import java.util.List;
import po.UserPO;
public interface UserPOI {
public boolean addUser(UserPO user);
public List<UserPO> gets();
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import po.UserPO;
public class userPOImpl implements UserPOI {
public boolean addUser(UserPO user) {
boolean flag=false;
Connection conn=null;
Statement stat=null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//从驱动中获取数据库的链接
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8", "root", "");
//创建条件语句对象,即创建数据库中写入sql语句的对象
stat= conn.createStatement();
//执行sql语句,并得到如果是增删改操作都是用executeUpdate()方法返回执行成功的记录的条数,如果是查操作得到ResultSet返回值
int res=stat.executeUpdate("insert into user values(‘"+user.getUserName()+"‘,‘"+user.getPassWd()+"‘) ");
if(res!=0){ //如果res不等于0则说明sql语句执行成功。
flag=true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && stat.isClosed()){
stat.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return flag;
}
public List<UserPO> gets() {
List<UserPO> list=new ArrayList<UserPO>();
Connection conn=null;
Statement stat=null;
ResultSet res=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8", "root", "");
stat=conn.createStatement();
res=stat.executeQuery("select * from user");
while(res.next()){ //不能是if
UserPO user=new UserPO(); //注意这里的new UserPO()的位置,不能放在外面new 否则list里只有一个对象
user.setUserName(res.getString("userName"));
user.setPassWd(res.getString("passWd"));
list.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && stat.isClosed()){
stat.close();
}
if(res!=null && res.isClosed()){
res.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return list;
}
}
2.5 创建测试类进行测试。
package test;
import java.util.List;
import org.junit.Test;
import dao.userPOImpl;
import po.UserPO;
public class UserTest {
@Test
public void UserPOTest(){
userPOImpl im=new userPOImpl();
UserPO user=new UserPO();
user.setUserName("张三");
user.setPassWd("123");
im.addUser(user);
}
@Test
public void userPOget(){
userPOImpl im=new userPOImpl();
List<UserPO> list=im.gets();
for(int i=0;i<list.size();i++)
System.out.println(list.get(i).getUserName());
}
}
结果:




(十七)jdbc(Java Data Base Connectivity,java数据库连接)基础使用
原文:http://www.cnblogs.com/shyroke/p/6511539.html