在JSP中连接数据库
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中连接数据库及使用
在JSP中连接数据库相关推荐
- JSP中连接数据库时的一些心得体会
JSP中连接数据库时的一些心得体会: 1.如果碰到无法连接到数据库,先检查自己的用户名及密码有没有差错. 2.如果自己的数据库的用户名和密码没有差错.再检查"java.util.*/&quo ...
- 在JSP中连接数据库及使用
目录 1.数据库管理系统 2.MySQL 3.JDBC 4.数据库操作 4.1 查询 1.结果集与查询: 2.结果集的列名与列的数目 3.随机查询 4.条件查询 5.排序查询 4.2更新.添加.删除记 ...
- jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题
jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...
- jsp mysql 图片路径,请教JSP中怎么向MySql中存入和取出图片
当前位置:我的异常网» Java Web开发 » 请教JSP中怎么向MySql中存入和取出图片 请教JSP中怎么向MySql中存入和取出图片 www.myexceptions.net 网友分享于:2 ...
- java做jsp问题_java/jsp中 中文问题详解
java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00 作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...
- JSP中是EL表达式与JSTL
EL语法:${ } EL取值来自于作用域对象 1.如何从指定作用域取值(默认从最小作用域取值) pageScope.requestScope.sessionScope.applicationScope ...
- JSP中的重定向和请求转发以及它们的区别
我们先硬着头皮看一下重定向的定义: 重定向(Redirect): 客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方 ...
- JSP中的EL表达式详细介绍
2019独角兽企业重金招聘Python工程师标准>>> 一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 ...
- JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载
文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...
最新文章
- python TypeError: ‘module‘ object is not callable
- 看看那些令你惊叹的PCB设计艺术
- bugzilla dbd-mysql_在Red Hat Linux下安装配置Bugzilla
- Infinispan 10.0.0.Beta2 和 9.4.8 发布,分布式集群缓存系统
- Java多线程编程实战指南
- 第一次使用JMETER:JMETER hello word
- mysql 64位 8.0.11_mysql8.0.11 在windows64安装 步骤
- matlab怎么打出角频率,[Matlab]频率f,角频率Ω和数字频率w的物理含义
- 循环与函数及相关例子
- Oracle SQL性能优化40条,值得收藏
- POJ 3080 - Blue Jeans
- QDialog之屏蔽Esc键
- Python学习总结(1)——编程准备和基本语法
- 计算机专业毕设java选题参考
- Navicat8.0注册码
- Mac苹果电脑上右键创建文件
- Altium designer如何实现原理图和PCB交互式布局
- 学习小程序遇到的问题总结
- C++ 修改注册表的方法
- android图片缩放的处理方式
热门文章
- web前端面试--浏览器兼容性问题
- AI (Adobe Illustrator)软件快捷键使用大全(适用于全部版本)
- 《有限与无限的游戏》第五章 自然是不能言说者的王国:经典摘抄(2)
- lua移植到STM32F4全过程
- ORACLE数据库监控系统
- 无法定位程序输入点SetDefaultDIIDirectories于动态链接库KERNEL32.dII上。
- Symbian C++手机编程中字符串处理
- 调制、数字调制、模拟调制比较
- 【Java第34期】:Bean的六种作用域
- STM32+CubeMX开发工程笔记汇总(更新2022.6.12)