今天完成的任务
利用jdbc实现对数据库的增删改查。
代码已经上传github,gayhub链接
1.数据表设计:
2.blog\JobDAO.java #定义job表的数据操作接口
package blog;
public interface JobDAO {
public int insert(String jname,int number,long create_at,long update_at);
public int update(String jname,int number);
public int delete(String jname);
public void select(String jname);
}
3.blog\JobDAOImpl.java #定义Job表的数据操作类,实现JobDAO接口,包括增删改查
package blog;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.util.*;
public class JobDAOImpl implements JobDAO{
private Connection conn;
private PreparedStatement psjob;
private Statement jobinfo;
private ResultSet results;
long time = new Date().getTime();
//插入数据
public int insert(String jname, int number, long create_at,long update_at){
int result = 0;
conn = ConnectionManager.getConnection();
try{
String sql = "insert into yl_job (jname,number,create_at,update_at)values(?,?,?,?)";
psjob = conn.prepareStatement(sql);
psjob.setString(1, jname);
psjob.setInt(2, number);
psjob.setLong(3, create_at);
psjob.setLong(4, update_at);
result = psjob.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}finally{
ConnectionManager.closeStatement(psjob);
ConnectionManager.closeConnection(conn);
}
return result;
}
//更新job的 数目
public int update(String jobName, int number){
int result = 0;
conn = ConnectionManager.getConnection();
try{
String sql = "update yl_job set number=?,update_at=? where jname=?";
psjob = conn.prepareStatement(sql);
psjob.setInt(1, number);
psjob.setLong(2, time);
psjob.setString(3, jobName);
result = psjob.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}finally{
ConnectionManager.closeStatement(psjob);
ConnectionManager.closeConnection(conn);
}
return result;
}
//根据job name删除job
public int delete(String jobName){
int result = 0;
conn = ConnectionManager.getConnection();
try{
String sql = "delete from yl_job where jname=?";
psjob = conn.prepareStatement(sql);
psjob.setString(1, jobName);
result = psjob.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}finally{
ConnectionManager.closeStatement(psjob);
ConnectionManager.closeConnection(conn);
}
return result;
}
//从数据库查询数据
public void select(String jobName){
conn = ConnectionManager.getConnection();
try{
String sql = "select * from yl_job where jname = '"+jobName+"'";
jobinfo = conn.createStatement();
ResultSet results = jobinfo.executeQuery(sql);
while(results.next()){
System.out.println(results.getString("jid")+" "+results.getString("jname")+" "+results.getString("create_at")
+" "+results.getString("update_at") );
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
4.blog\TestJob.java #测试JobDAOImpl.java类中的方法
package blog;
import java.util.*;
public class TestJob {
public static void main(String[] args){
JobDAO jobdao = new JobDAOImpl();
long time = new Date().getTime();
int res;
res = jobdao.insert("JAVA架构师", 3, time, time);
if(res>0)
System.out.println("插入成功, 插入"+res+"条");
else
System.out.println("插入失败!!!");
res = jobdao.update("JAVA架构师", 13);
if(res>0)
System.out.println("更新成功!");
else
System.out.println("更新失败!!!");
res = jobdao.delete("JAVA架构师");
if(res>0)
System.out.println("删除成功!");
else
System.out.println("删除失败!!!");
jobdao.select("JAVA研发工程师");
}
}
5.控制台输出结果
明天计划的任务
1.学习MyBatis。
遇到的问题
1.存入数据的中文显示为三个???
在连接数据库的url后面添加参数:
private static final String DATABASE_URL="jdbc:mysql://localhost:3306/ylxjava?useUnicode=true&characterEncoding=utf8";
2.错误:java.sql.SQLException:Column count doesn’t match value count at row 1
错误原因:在插入数据时,插入的VALUE的字段数跟数据库表字段个数不一致
3.如何获取当前时间戳?
注意:import java.util.date; #引入date库
new Date().getTime();
4.错误:The type Date is ambiguous
意思是“Date类型不明确”,其实是因为冲突造成的。在该文件中,一零同时引入了java.sql.* 和java.util.*,但是两个钟中都存在着Date类型,编译器不清楚使用哪一个,于是报错。
解决办法,将需要的sql的包一个一个引入。
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.*;
5.错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column
在操作数据库时String类型的参数必须要用’ ‘把参数引起来才能传递并接收!此处一零上传的参数是String类型,错误原因是没有加单引号。因此,在进行数据库操作时,千万不要漏了两边的单引号。
String sql = "select * from yl_job where jname = '"+jobName+"'";
收获
1.熟悉了利用JDBC对数据库实现增删改查。
2.学习了如果实现Interface和Imple的分离