今天复习了下JDBC相关的知识,初步了解JDBC与数据库的连接配置,练习了下JDBC工具类的编写,和使用JDBC 来对数据库进行增删查改;详细实现代码如下
1:jdbc连接数据库的工具类,记得导入JDBC驱动包,这里笔者使用的mysql数据库,导入包为“mysql-connector-java-5.1.28-bin.jar”,驱动包在官网均可下载
DatabaseUtil.java
package com.test.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC连接数据库工具类
* */
public class DatabaseUtil {
// 数据库对象
private static Connection conn;
// 数据库驱动类名称
private static final String DRIVER = "com.mysql.jdbc.Driver";
// 数据连接(mysql是数据库类型,127.0.0.1 代表本地数据库,3306是默认的端口号,demo是数据库名称)
private static final String URL = "jdbc:mysql://127.0.0.1:3306/demo";
// 数据库登陆用户名
private static final String USER = "root";
// 数据库登陆密码
private static final String PASS = "admin";
/**
* 注册数据库驱动
* */
static {
try {
Class.forName(DatabaseUtil.DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
* */
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(DatabaseUtil.URL,
DatabaseUtil.USER, DatabaseUtil.PASS);
} catch (SQLException e) {
e.printStackTrace();
}
return DatabaseUtil.conn;
}
/**
* 关闭资源
* */
public static void close(Connection conn, Statement stmt, ResultSet rs)
throws Exception {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.数据库中的表 的创建脚本,编码都是UTF8格式
tb_user_account.sql
create table tb_user_account(
accountid integer not null auto_increment comment '用户ID',
accountname varchar(50) not null comment '用户名',
password varchar(55) not null comment '登陆密码',
email varchar(100) not null comment '用户邮箱',
birthday varchar(21) not null comment '出生日期',
name varchar(50) comment '真实姓名',
registertime timestamp not null default current_timestamp comment '注册时间',
primary key(accountid)
);
3.数据库操作 类,对表中的数据进行增删改查
DatabaseOperate.java
package com.test.demo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 数据库操作示例
*
* @file DatabaseOperate.java
* @author zj
* @created 2014年6月23日
* @version v1.0
*/
public class DatabaseOperate {
private PreparedStatement pre;
private ResultSet rs;
/**
* Test
* */
public static void main(String[] args) {
DatabaseOperate operate = new DatabaseOperate();
// 初始化用户对象
UserAccountDto account = new UserAccountDto();
account.setAccountname("LongTimeNoSee");
account.setPassword("admin");
account.setEmail("NokiaLumia@nokia.com");
account.setName("Lumia");
account.setBirthday("1990-01-01");
// 向数据库中添加一条记录
operate.insert(account);
// 查询该条用户记录
operate.select(account);
// 修改该条用户记录
operate.update(account);
// 删除该条用户记录
operate.delete(account);
}
/**
* 新增用户信息(新增操作)
* */
public void insert(UserAccountDto account) {
Connection conn = DatabaseUtil.getConnection();
try {
/**
* SQL预处理
* */
pre = conn.prepareStatement("insert into tb_user_account (accountname,password,email,birthday,name) "
+ " values(?,?,?,?,?)");
// 向预处理sql语句中填充参数;
pre.setString(1, account.getAccountname());
pre.setString(2, account.getPassword());
pre.setString(3, account.getEmail());
pre.setString(4, account.getBirthday());
pre.setString(5, account.getName());
// 执行组装后的sql
pre.executeUpdate();
System.out.println("新增用户信息成功!");
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
DatabaseUtil.close(conn, pre, rs);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 通过用户名查询出该用户注册信息,获取到accountid值(查询操作)
* */
public UserAccountDto select(UserAccountDto account) {
Connection conn = DatabaseUtil.getConnection();
String accountname = account.getAccountname();
try {
pre = conn.prepareStatement("select * from tb_user_account where "
+ " accountname = ?");
pre.setString(1, accountname);
rs = pre.executeQuery();
while(rs.next()){
// 将数据库自动生成的信息设置到用户对象中
account.setAccountid(rs.getInt("accountid"));
account.setRegistertime(rs.getString("registertime"));
// 将查询出来的对象打印到控制台
System.out.println(rs.getInt("accountid"));
System.out.println(rs.getString("accountname"));
System.out.println(rs.getString("password"));
System.out.println(rs.getString("email"));
System.out.println(rs.getString("birthday"));
System.out.println(rs.getString("name"));
System.out.println(rs.getString("registertime"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
DatabaseUtil.close(conn, pre, rs);
} catch (Exception e) {
e.printStackTrace();
}
}
return account;
}
/**
* 修改用户信息(修改操作)
* */
public void update(UserAccountDto account) {
Connection conn = DatabaseUtil.getConnection();
try {
pre = conn.prepareStatement("update tb_user_account set accountname = ? "
+ " where accountid = ?");
pre.setString(1, "Nokia");
pre.setInt(2, account.getAccountid());
pre.executeUpdate();
System.out.println("已经将用户名修改为Nokia");
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
DatabaseUtil.close(conn, pre, rs);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 删除该条用户信息(删除操作)
* */
public void delete(UserAccountDto account) {
Connection conn = DatabaseUtil.getConnection();
Integer accountid = account.getAccountid();
try {
pre = conn.prepareStatement("delete from tb_user_account where accountid=?");
pre.setInt(1, accountid);
pre.executeUpdate();
System.out.println("已经将用户删除");
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
DatabaseUtil.close(conn, pre, rs);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
4.数据库表所对应的实体类
UserAccountDto.java
package com.test.demo;
/**
* 用户注册表
* */
public class UserAccountDto {
/** 用户ID,对应表中自增长主键 . */
private Integer accountid;
/** 用户名,登陆名称. */
private String accountname;
/** 用户密码 . */
private String password;
/** 用户名称 . */
private String name;
/** 用户邮箱 . */
private String email;
/** 用户生日 . */
private String birthday;
/** 用户注册时间. */
private String registertime;
/*****************************
* 各个字段的get() 方法和 set()方法
*****************************/
public Integer getAccountid() {
return accountid;
}
public void setAccountid(Integer accountid) {
this.accountid = accountid;
}
public String getAccountname() {
return accountname;
}
public void setAccountname(String accountname) {
this.accountname = accountname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
/**
* @return the registertime
*/
public String getRegistertime() {
return registertime;
}
/**
* @param registertime the registertime to set
*/
public void setRegistertime(String registertime) {
this.registertime = registertime;
}
}
至此,完成了对表tb_user_account 的操作!