⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.25.txt

📁 java学习的点滴
💻 TXT
字号:
练习题:
_____________________________________________________________________________________
1 .在数据库创建一个表 testjdbc,共有四列:

	id        : number ,主键
	name      : varchar2
	birthday  : date
	lastupdate: date
2 .创建一个序列,用于维护主键

创建一个java项目,实现下列功能:

1 向表中插入2条记录 

	id:使用序列
	name:aaa
	birthday: 1999-9-11
	lastupdate: 系统当前时间

	id:使用序列
	name:ccc
	birthday: 1999-9-12
	lastupdate: 系统当前时间

2 查询全部记录并在控制台打印出来,顺序按名字排序。日期按YYYY/MM/DD格式显示

3 把名字是ccc的记录birthday更改为2000-1-1

4 删除name是aaa的记录
_____________________________________________________________________________________


答案:
-------------------------------------------------------------------------

实现的是数据库的连接

package conn;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConn {
	
	public static Connection getDBConn()
	{
		Connection conn=null;
		
		try {
			/*载入驱动程序*/
			Class.forName("oracle.jdbc.driver.OracleDriver");
			/*用DriverManager.getConnection()方法来连接数据库,它有三个参数:url 、用户名、密码,
			 * 其中url中的“jdbc:oracle:thin:”是固定的写法,@后跟的是你要访问的IP地址,端口号,服务名*/
			conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:dbl","scott","tiger");
		} catch (Exception e) {
			// TODO 自动生成 catch 块
			System.out.println("数据库连接失败");
			e.printStackTrace();
		}
		return conn;
	}

}



----------------------------------------------------------------------

package vo;

/*此类的作用是用于存储数据库中表中的字段值,类中的成员变量名最好与表中的列名相同。
 * 在写这样的类的时候,注意不要写万能类,也就是说此类将数据库中所有表的字段全写出来。*/
public class TJdbcVo {
	
	
	private int id;
	private String name;
	private String birthday;
	private String lastupdate;
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLastupdate() {
		return lastupdate;
	}
	public void setLastupdate(String lastupdate) {
		this.lastupdate = lastupdate;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	

}
--------------------------------------------------------------------------------

用Java语言来操纵数据库

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import vo.TJdbcVo;
import conn.DBConn;

public class TjdbcDao {
***************************	
	//1 向表中插入2条记录 
	public int InsertDemo (TJdbcVo tj)
	{
		Connection conn=null;
		PreparedStatement pst=null;
		
		/*定义一个flg变量,用于判断操作是否成功*/
		int flg=0;
		
		/*在写sql的时候,要注意表中的字段的类型与类中的成员变量的类型是否一致,不一致要进行转换,
		 * 如birthday在表中的类型为date型,在类中获得的类型为String ,要用to_date进行转换.*/
		String sql="insert into testjdbc (id,name,birthday,lastupdate) " +
				" values (testjdbc_seq.nextval,?,to_date(?,'yyyy-mm-dd'),sysdate)";
		
		try {
			/*连接数据库*/
			conn=DBConn.getDBConn();
			
			/*设置数据库的提交方式为手动*/
			conn.setAutoCommit(false);
			
			/* 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。*/
			pst=conn.prepareStatement(sql);
			
			/*pst.setString()将指定参数设置为给定 Java String 值。参数是1、2, 1、2所对应的是
			 * sql中的?,如?的个数有5个,setString ()的参数是从1到5。 */
			pst.setString(1, tj.getName());
			pst.setString(2, tj.getBirthday());
			
			/*executeUpdate()方法是计算操作所执行的行数,并将结果赋给flg*/
			flg=pst.executeUpdate();
			
			/*提交上面的操作*/
			conn.commit();
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			try {
				/*如出现异常,将数据库中的表恢复到操作前样子*/
				conn.rollback();
			} catch (SQLException e1) {
				// TODO 自动生成 catch 块
				e1.printStackTrace();
			}
			System.out.println("插入失败");
			e.printStackTrace();
		}finally{
			try {
				/*不要忘了将提交设置成自动模式*/
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			
			
			/*关闭资源和数据库*/
			try {
				pst.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		return flg;
	}

***********************************	
	
	//2 查询全部记录并在控制台打印出来,顺序按名字排序。日期按YYYY/MM/DD格式显示
	public List selectDemo()
	{
		Connection conn=null;
		Statement st=null;
		ResultSet rs=null;
		
		List l1=new ArrayList();
		
		/*因为sql实现的是从数据库中查询数据,并将结果在控制台输出,
		 * birthday在数据库的类型为date,要通过to_char将其转换为String,
		 * 与Java对应*/
		String sql="select id,name,to_char(birthday,'yyyy/mm/dd') birthday,to_char(lastupdate,'yyyy/mm/dd') last from testjdbc order by name desc";
		
		try {
			conn=DBConn.getDBConn();
			/* 创建一个 Statement 对象来将 SQL 语句发送到数据库。*/
			st=conn.createStatement();
			/*执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。*/
			rs=st.executeQuery(sql);
			
			/*用next()方法将数据取出*/
			while(rs.next())
			{
				/*将取出的数据存入vo(值类)*/
				TJdbcVo tjvo=new TJdbcVo();
				tjvo.setId(rs.getInt("id"));
				tjvo.setName(rs.getString("name"));
				tjvo.setBirthday(rs.getString("birthday"));
				tjvo.setLastupdate(rs.getString("last"));
				
				/*将vo的对象存到List容器类*/
				l1.add(tjvo);
			}
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			System.out.println("查询失败");
			e.printStackTrace();
		}finally{
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				st.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		return l1;
		
	}

*********************************************	
	
	//3 把名字是ccc的记录birthday更改为2000-1-1
	public int updateDemo(String name,TJdbcVo tjvo)
	{
		Connection conn=null;
		PreparedStatement pst=null;
		
		int flg=0;
		String sql="update testjdbc set birthday=to_date(?,'yyyy-mm-dd') where name='"+name+"'";
		
		try {
			conn=DBConn.getDBConn();
			conn.setAutoCommit(false);
			pst=conn.prepareStatement(sql);
			pst.setString(1, tjvo.getBirthday());
			flg=pst.executeUpdate();
			conn.commit();
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO 自动生成 catch 块
				e1.printStackTrace();
			}
			System.out.println("更新失败");
			e.printStackTrace();
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				pst.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		
		return flg;
		
	}

****************************************	
	
	//4 删除name是aaa的记录
	public int deleteDemo(String name)
	{
		Connection conn=null;
		Statement st=null;
		
		int flg=0;
		String sql="delete testjdbc where name='"+name+"'";
		
		try {
			conn=DBConn.getDBConn();
			conn.setAutoCommit(false);
			st=conn.createStatement();
			flg=st.executeUpdate(sql);
			conn.commit();
			
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO 自动生成 catch 块
				e1.printStackTrace();
			}
			System.out.println("删除失败");
			e.printStackTrace();
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				st.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		return flg;
		
		
	}
}

------------------------------------------------------------------------------

package bo;

import java.util.List;

import vo.TJdbcVo;
import dao.TjdbcDao;

public class Business {

	
	//1 向表中插入2条记录 
	public void displayInsert(TJdbcVo tj)
	{
		TjdbcDao tjdao=new TjdbcDao();
		int flg=tjdao.InsertDemo(tj);
		if(flg!=0){
			System.out.println("插入成功");
		}else{
			System.out.println("插入失败");
			
		}
	}

	
	//2 查询全部记录并在控制台打印出来,顺序按名字排序。日期按YYYY/MM/DD格式显示
	public void displaySelect()
	{
		TjdbcDao tjdao=new TjdbcDao();
		List l1=tjdao.selectDemo();
		if(l1!=null)
		{
			for(int i=0;i<l1.size();i++)
			{
				TJdbcVo tjvo=(TJdbcVo)l1.get(i);
				if(tjvo!=null)
				{
					System.out.println(tjvo.getId()+" "+tjvo.getName()+" "+tjvo.getBirthday()+" "+tjvo.getLastupdate());
				}
			}
		}
	}

	
	
	//3 把名字是ccc的记录birthday更改为2000-1-1
	public void displayUpdate(String name,TJdbcVo tjvo)
	{
		TjdbcDao tjdao=new TjdbcDao();
		int flg=tjdao.updateDemo(name, tjvo);
		if(flg!=0){
			System.out.println("更新成功");
		}else{
			System.out.println("更新失败");
		}
	}

	
	//4 删除name是aaa的记录
	public void disDelete(String name)
	{
		TjdbcDao tjdao=new TjdbcDao();
		int flg=tjdao.deleteDemo(name);
		if(flg!=0){
			System.out.println("删除成功");
		}else{
			System.out.println("删除失败");
			
		}
			
	}
}
---------------------------------------------------------------------

测试类

package test;

import vo.TJdbcVo;
import bo.Business;

public class Test {
	
	public static void main(String []args)
	{
		Business b1=new Business();
		TJdbcVo tjvo=new TJdbcVo();
		tjvo.setName("aaa");
		tjvo.setBirthday("1999-9-11");
		//b1.displayInsert(tjvo);
		
		TJdbcVo tjvo1=new TJdbcVo();
		tjvo1.setName("ccc");
		tjvo1.setBirthday("1999-9-12");
		//b1.displayInsert(tjvo1);
		
		//b1.displaySelect();
		
		TJdbcVo tjvo2=new TJdbcVo();
		
		tjvo2.setBirthday("2000-1-1");
		//b1.displayUpdate("ccc", tjvo2);
		
		b1.disDelete("aaa");
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -