程序练习题(4)


JDBC访问数据库

理解JDBC的工作原理,掌握JDBC访问数据库; 掌握常见数据库MYSQL;

实验环境

Win7+Myeclipse+MySQL

导入MySQL驱动到项目目录下


实验内容

使用JDBC写一个简单的小程序,JDBC连接MySQL数据库,并且进行一些基本操作。
创建数据库:

在这里插入图片描述
查询全部:在这里插入图片描述
特定查询:在这里插入图片描述
插入行:在这里插入图片描述
删除行:在这里插入图片描述

更新行:在这里插入图片描述


实验代码

MySQL里面创建数据库:

CREATE TABLE
    tbl_user_info
    (
        id INT NOT NULL AUTO_INCREMENT,
        user_name VARCHAR(20) NOT NULL,
        age INT NOT NULL,
        sex INT(1) NOT NULL,
        create_dt DATE NOT NULL,
        PRIMARY KEY (id)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8;

UserVO.java

package 项目名;
import java.util.Date;
public class UserVO {
	private int id;
	private String userName;
	private int age;
	private int sex;
	private Date createDt;
	
	public int getId(){
		return id;
	}
	public void setId(int id){
		this.id=id;
	}
	public String getUserName(){
		return userName;
	}
	public void setUserName(String userName){
		this.userName=userName;
	}
	public int getAge(){
		return age;
	}
	public void setAge(int age){
		this.age=age;
	}
	public int getSex(){
		return sex;
	}
	public void setSex(int sex){
		this.sex=sex;
	}
	public Date getCreateDt(){
		return createDt;
	}
	public void setCraeteDt(Date createDt){
		this.createDt=createDt;
	}
	public String toString(){
		return "UserVO [id="+id+",userName="+userName+",age="+age+",sex="+sex+",createDt="+createDt+"]";
	}
	
}

DBUtil.java

package 项目名;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtil {
	private static final String UR1="jdbc:mysql://localhost:3306/test?"+"user=Mysql&useUnicode=true&characterEncoding=UTF-8";//test为数据库名称,我的Mysql账户没设置密码
	private static final String DRIVER="com.mysql.jdbc.Driver";
	public static Connection connectDB()throws Exception{
		Class.forName(DRIVER);
		Connection conn=DriverManager.getConnection(UR1);
		return conn;
	}
	
}

UserDao.java

package 项目名;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDao {

		public List<UserVO>queryAll()throws Exception{
			Connection conn=DBUtil.connectDB();
			String sql="SELECT * FROM tbl_user_info";
			List<UserVO>userList=new ArrayList<UserVO>();
			Statement stmt=conn.createStatement();
			ResultSet rs=stmt.executeQuery(sql);
			while(rs.next()){
				UserVO user= new UserVO();
				user.setId(rs.getInt("id"));
				user.setUserName(rs.getString("user_name"));
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getInt("sex"));
				user.setCraeteDt(rs.getDate("create_dt"));
				userList.add(user);
			}
			return userList;
		}

		public List<UserVO>queryByParams(List<Map<String,Object>>params)throws Exception{
			Connection conn=DBUtil.connectDB();
			StringBuilder sql=new StringBuilder("SELECT * FROM tbl_user_info WHERE 1=1 ");
			for(Map<String,Object>param:params){
				sql.append("and");
				sql.append(" "+param.get("col")+" ");
				sql.append(" "+param.get("rel")+" ");
				sql.append(" "+param.get("value")+" ");
			} 
			System.out.println(sql.toString());
			List<UserVO>userList=new ArrayList<UserVO>();
			Statement stmt=conn.createStatement();
			ResultSet rs=stmt.executeQuery(sql.toString());
			while(rs.next()){
				UserVO user= new UserVO();
				user.setId(rs.getInt("id"));
				user.setUserName(rs.getString("user_name"));
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getInt("sex"));
				user.setCraeteDt(rs.getDate("create_dt"));
				userList.add(user);
			}
			return userList;
		}
	public void addUser(UserVO user)throws Exception{
		Connection conn=DBUtil.connectDB();
		String sql="INSERT INTO tbl_user_info(user_name,age,sex,create_dt)"+" VALUES(?,?,?,?)";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1,user.getUserName());
		pstmt.setInt(2,user.getAge());
		pstmt.setInt(3,user.getSex());
		pstmt.setDate(4,new Date(new java.util.Date().getTime()));
		pstmt.execute();
	}
	public void deleteUser(int id)throws Exception{
		Connection conn=DBUtil.connectDB();
		String sql="DELETE FROM tbl_user_info WHERE id=?";
		PreparedStatement pstmt=conn.prepareStatement(sql);
		pstmt.setInt(1, id);
		pstmt.execute();
	}
	public void updateUser(UserVO user)throws Exception{
		Connection conn=DBUtil.connectDB();
		String sql="UPDATE tbl_user_info SET user_name=?,age=?,sex=?"+" WHERE id=?";
		PreparedStatement pstmt=conn.prepareStatement(sql);
		pstmt.setString(1,user.getUserName());
		pstmt.setInt(2, user.getAge());
		pstmt.setInt(3, user.getSex());
		pstmt.setInt(4,user.getId());
		pstmt.executeUpdate();
	}
	public static void main(String[] args){
		UserDao dao=new UserDao();
		try{
			List<UserVO>userList=dao.queryAll();
			for(UserVO user:userList){
				System.out.println(user);
			}
		}
			catch(Exception e){
				e.printStackTrace();
			}
			
		List<Map<String,Object>>params=new ArrayList<Map<String,Object>>();
		Map<String,Object>param1 =new HashMap<String,Object>();
		param1.put("col","user_name");
		param1.put("rel","like");
		param1.put("value","'%John%'");
		params.add(param1);
		
		Map<String,Object>param2=new HashMap<String,Object>();
		param2.put("col","sex");
		param2.put("rel","=");
		param2.put("value",1);
		params.add(param2);
		try{
			List<UserVO>userList=dao.queryByParams(params);
			for(UserVO user:userList){
				System.out.println(user);
			}
		}
			catch(Exception e){
				e.printStackTrace();
			}
		UserVO user= new UserVO();
		user.setUserName("Tom");
		user.setAge(20);
		user.setSex(1);
		try{
			dao.addUser(user);
		}
		catch(Exception e){
			e.printStackTrace();
		}
		try{
			dao.deleteUser(7);//根据id删除
		}
		catch(Exception e){
			e.printStackTrace();
		}
		user.setUserName("Mary");
		user.setAge(30);
		user.setSex(0);
		user.setId(4);
		try{
			dao.updateUser(user);
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}				
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值