📄 4.25.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 + -