发表于: 2017-12-08 07:35:56
2 784
今天完成的事:
一 、下载了 mysql-connector-java-5.1.45-bin.jar 用 java 语言连接接数据库,简单测试 Statement 类,PreparedStatement 类。
public static void main(String[] args) {
//类的路径
String driver="com.mysql.jdbc.Driver";
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称
String url = "jdbc:mysql://localhost:3306/xiuzhen";
//用户名
String user = "root";
//密码
String password="";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
//Statement
Statement st = conn.createStatement();
String sql ="delete from enter_info where e_name=''";
st.execute(sql);
sql="select * from enter_info limit 10";
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
// System.out.println(rs.getString("e_name")+"\t"+rs.getInt("e_qq"));
}
//PreparedStatement
PreparedStatement ps = null;
ps = conn.prepareStatement("select * from enter_info where e_name like ?");
ps.setString(1, "%六%");
ResultSet prs = ps.executeQuery();
while(prs.next()){
System.out.println(prs.getString("e_name")+"\t"+prs.getString("e_borther"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二、实现了JdbcTemplate 类
package com.jdbc;
import java.sql.*;
public class JdbcTemplate {
private Connection conn;
public JdbcTemplate(){
}
public JdbcTemplate(Connection conn){
this.conn = conn;
}
/**
*
* @param sql 数据库sql语句
* @param callback
* public interface RowCallBackHandler {
void processRow(ResultSet rs);
}
* 将结果集返回给调用者操作。
* 实现回调
*
*/
public void query(String sql, RowCallBackHandler callback){
try {
Statement st = conn.createStatement();
ResultSet rs=st.executeQuery(sql);
if(callback !=null){
callback.processRow(rs);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @param sql
* @param setter
* public interface PreparedStatementSetter {
void setValues(PreparedStatement ps);
}
* 给sql语句中的(“?”)--作为占位符,设置参数。
* 由调用者去实现占位符的替换
* @param callback
*/
public void query(String sql,PreparedStatementSetter setter , RowCallBackHandler callback){
try {
PreparedStatement ps = conn.prepareStatement(sql);
if(setter != null){
setter.setValues(ps);
}
ResultSet rs =ps.executeQuery();
if(callback != null){
callback.processRow(rs);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void update(String sql,PreparedStatementSetter setter){
try {
PreparedStatement ps = conn.prepareStatement(sql);
if( setter != null){
setter.setValues(ps);
}
ps.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、用写好的模板实现 接口 IStudentDAO ,并做出简单的数据库数据操作
[java] view plain
public interface IStudentDAO {
void saveStudent(Student stu , Connection conn);
void deleteStudent(int id , Connection conn);
void updateStudent(Student stu , Connection conn);
Student findStudent(int id , Connection conn);
List<Student> findStudents(Connection conn);
}
接口实现类代码
package com.stuDAO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.bean.Student;
import com.jdbc.JdbcTemplate;
import com.jdbc.RowCallBackHandler;
public class StudentImpl implements IStudentDAO {
public void saveStudent(Student stu, Connection conn) {
JdbcTemplate jt = new JdbcTemplate(conn);
String name = stu.getName();
int qq = stu.getQq();
String sch = stu.getSchool();
long create = stu.getCreate();
long update = stu.getUpdate();
String sql = "insert into student(name,qq,school,create_at,update_at) values ('"+name+"',"+qq+",'"+sch+"',"+create+","+update+")";
//System.out.println(sql);
jt.update(sql, null);
}
public void deleteStudent(int id, Connection conn) {
// TODO Auto-generated method stub
JdbcTemplate jt = new JdbcTemplate(conn);
String sql = "delete from student where id="+id;
jt.update(sql, null);
}
public void updateStudent(Student stu, Connection conn) {
// TODO Auto-generated method stub 偷个懒
JdbcTemplate jt = new JdbcTemplate(conn);
deleteStudent(stu.getId(),conn);
saveStudent(stu,conn);
}
public Student findStudent(int id, Connection conn) {
// TODO Auto-generated method stub
JdbcTemplate jt = new JdbcTemplate(conn);
final Student s = new Student();
String sql = "select * from student where id="+id;
jt.query(sql, new RowCallBackHandler(){
public void processRow(ResultSet rs) {
try {
while(rs.next()){
//System.out.println(rs.getString("name"));
s.setId((Integer) rs.getObject(1));
s.setName((String) rs.getObject(2));
s.setQq((Integer) rs.getObject(3));
s.setSchool((String) rs.getObject(4));
s.setCreate((Long) rs.getObject(5));
s.setUpdate((Long) rs.getObject(6));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
return s;
}
public List<Student> findStudents(Connection conn) {
// TODO Auto-generated method stub
JdbcTemplate jt = new JdbcTemplate(conn);
String sql = "select * from student";
final List<Student> list = new ArrayList<Student>();
jt.query(sql, new RowCallBackHandler(){
public void processRow(ResultSet rs) {
// TODO Auto-generated method stub
try {
while(rs.next()){
Student s = new Student();
s.setId((Integer) rs.getObject(1));
s.setName((String) rs.getObject(2));
s.setQq((Integer) rs.getObject(3));
s.setSchool((String) rs.getObject(4));
s.setCreate((Long) rs.getObject(5));
s.setUpdate((Long) rs.getObject(6));
list.add(s);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
return list;
}
}
了解修饰符 final https://www.cnblogs.com/lwbqqyumidi/p/3513047.html
评论