在JSP中连接数据库

本文详细介绍了数据库管理系统(DBMS)的基本概念,列举了常见DBMS如Oracle、MySQL等,并深入讲解了数据库操作,包括查询、条件查询、排序、更新、添加和删除记录。此外,还介绍了预处理语句的使用以及事务处理的重要性,强调了事务的提交和回滚。内容涵盖JDBC操作数据库的各种方法,如ResultSet的使用和事务管理。
摘要由CSDN通过智能技术生成

1、数据库管理系统

数据库是提供数据的基地,它能保存数据并能使用户方便的访问数据。

DBMS是(Data Base Management System)的缩写,是管理数据库软件的集合。
DBMS包含面向用户接口功能和面向系统维护功能。
面向用户接口功能是提供用户访问数据库的一些必要手段。
面向系统维护功能是为数据库管理者提供数据库的维护工具。
目前常见的数据库管理系统有:

Oracle
Sybase
Informix
Microsoft SQL Server
MySQL

2、数据库操作

2.1 查询

1.结果集与查询
让连接对象con调用方法createStatement()创建执行SQL语句的Statement对象:

Statement sql=con.createStatement();

sql对象就可以调用相应的方法,实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中:

ResultSet rs=sql.executeQuery("SELECT * FROM product"); 
//product为表名

2.结果集的列名与列的数目
程序查询的时候,希望知道数据库表的字段(列)的名字以及表的字段的个数,那么一个办法是使用返回到程序中的结果集来获取相关的信息。

(1) 得到元数据对象metaData

ResultSetMetaData metaData = rs.getMetaData();

(2)得到结果集的列的个数,即共有几列

int columnCount = metaData.getColumnCount();

(3)结果集rs中的第i列的名字:

String columnName = metaData.getColumnName(i);

2.2 随机查询

使用Result的next()方法顺序地查询数据,为了得到一个可滚动的结果集,必须使用下述方法先获得一个Statement对象:

Statement stmt=con.createStatement(int type ,int concurrency);

然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:

 ResultSet  re=stmt.executeQuery(SQL语句);

type的取值决定滚动方式,取值可以是:

ResultSet.TYPE_FORWORD_ONLY :结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL_INSENSITIVE :结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE :返回可滚动的结果集,当数据库变化时,当前结果集同步改变。
concurrency取值决定是否可以用结果集更新数据库

ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。
ResultSet.CONCUR_UPDATETABLE:能用结果集更新数据库中的表。

2.3 条件查询

select… from 表 where 字段 满足的条件

select * from product where price > 2000 and price<5000
select * from product where name = 'java'

模糊查询,使用“%”表示零个或多个字符,用“_”表示任意一个字符:

select * from  product where name like '李%' 

2.4 排序查询

可以在SQL语句中使用ORDER BY子语句,对记录排序。

例如,按总成绩排序查询的SQL语句:SELECT * FROM student ORDER BY 总分
2.4.1 更新、添加、删除记录
Statement对象调用方法:

public int executeUpdate(String sqlStatement);

实现对数据库表中记录的字段值的更新、添加和删除记录。

//更新

executeUpdate("UPDATE product SET price = 6866 WHERE name='海尔电视机'");

//添加

executeUpdate("INSERT INTO students VALUES ('012','神通手机’,'2015-2-26',2687)");

//删除

executeUpdate("DELETE  FROM product WHERE number = '888' ");

2.5 用结果集操作数据库中的表

使用结果集更新数据库表中第n行记录中某列的值的步骤是:

1.结果集rs的游标移动到第n行
rs.absolute(n);
2.结果集将第n行的某列的列值更新
例如 更新列名是columnName的日期值是x指定的值:
updateDate(String columnName, Date x);
3.更新数据库中的表
最后,结果集调用updateRow()方法用结果集中的第n行更新数据库表中的第n行记录。
以下代码片段更新product表中的第3行记录的name列(字段)的值。

rs.absolute(3);
rs.updateString("name", "IBM PC");
rs.updateRow();

使用结果集向数据库表中插入(添加)一行记录步骤是:

1.结果集rs的游标移动到插入行(用于构建要插入的行的暂存区域)
rs.moveToInsertRow();

2.更新插入行的列值
例如:

rs.updateString(1, “c002”);
rs.updateString(2, “IBM iPad”);
rs.updateDate(3,Date());
rs.updateDouble(4, 5356);

3.插入记录
最后,结果集调用insertRow()方法用结果集中的插入行向数据库表中插入一行新记录。

2.6 预处理语句

对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么 con就可以调用

prepareStatement(String sql)

那么pre 对象可以随时调用下列方法都可以使得该底层内部命令被数据库执行,提高了数据库的访问速度:

boolean execute()
int executeUpdate()
ResultSet executeQuery()


在对SQL进行预处理时可以使用通配符“?”来代替字段的值

prepareStatement pre=
con.prepareStatement("SELECT * FROM product WHERE price < ? ");

调用相应的方法设置通配符“?”,代表具体的值
pre.setDouble(1,6565);
指定上述预处理语句pre中第1个通配符“?”代表的值是 6565
预处理语句设置通配符“?”的值的常用方法有:

void setDate(int parameterIndex,Date x)
void setDouble(int parameterIndex,double x)
void setFloat(int parameterIndex,float x)

2.7 事务

事务是保证数据库中数据完整性与一致性的重要机制。事务处理步骤如下:

1.连接对象使用setAutoCommit(boolean autoCommit)方法,
将参数autoCommit取值为false来关闭自动提交模式:
con.setAutoCommit(false);
2.commit()方法
con调用commit()方法就是让事务中的SQL语句全部生效。
3.rollback()方法
只要事务中任何一个SQL语句没有生效,就抛出SQLException异常。在处
理SQLException异常时,必须让con调用rollback()方法。

转载在JSP中连接数据库及使用


 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值