【第17个代码模型】使用 PreparedStatement 操作数据库(PrepareStatement 查询案例)|学习笔记

简介: 快速学习 【第17个代码模型】使用 PreparedStatement 操作数据库(PrepareStatement 查询案例)

开发者学堂课程【【名师课堂】Java 高级开发【第17个代码模型】使用 PreparedStatement 操作数据库(PrepareStatement 查询案例)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/372/detail/4653


【第17个代码模型】使用 PreparedStatement 操作数据库(PrepareStatement 查询案例)


PreparedStatement接口查询(核心)

由于在实际的开发中心 PreparedStatement 接口的使用频率非常高,所以对于此接口的查询操作特别重要,下列为最基础的查询处理模型:

1、查询全部

Class.forName(DBDRIVER);//进行数据库驱动的加载

Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSIString sql = " SELECT mid,name ,age,birthday, note FROM member" ;

Preparedstatement pstmt = conn.preparestatement(sql);

Resultset rs = pstmt.executeQuery() ;

while (rs.next())i

int mid = rs.getInt(1);

string name = rs.getstring(2);int age = rs.getInt(3) ;

Date birthday = rs.getDate(4) ;string note = rs.getstring(5);

system.out.println(mid +"、" + name + "、 "+age +"、"+ birthd

}

 

2、id 查询

public static final string DBUSER = "scott";

public static fina1 string DBPASSwORD = "tiger";

public static void main(String[] args)throws Exception {

Class.forName(DBDRIVER);//进行数据库驱动的加载

Connection conn = DriverManager.getConnection(DBURL,DBUSER, DBPASSNORD);string sql = " SELECT mid,name,age,birthday,note FRoM member WHERE mid=?" ;Preparedstatement pstmt = conn.preparestatement(sql);

pstmt.setInt(1,50);l

ResultSet rs = pstmt.executeQuery( ;while (rs.next()) i

int mid = rs.getInt(1) ;

string name = rs.getstring(2);int age = rs.getInt(3) ;

Date birthday = rs.getDate(4);string note = rs.getstring(5);

System.out.printIn(mid +" " +name + "、" +age +"." + birthday + ". " +note)

conn.close();

 

3、模糊查询处理

public static final string DBPASSWORD = "tiger";

public static void main(String[] args) throws Exception {

string column = "name" ; // 在那个列上执行模糊查询

String keyWord = "李" ; // 关键字

Class.forName ( DBDRIVER); // 进行数据库驱动的加载

Connection conn = DriverManager .getConnection( DBURL, DBUSER, DBPASS

//使用“?填充的占位符只有数据才可以使用,而对于列是无法使用的

String sq1 = " SELECT mid, name,age , birthday,note F ROM member WHERE

Preparedstatement pstmt = conn . prepareStatement(sq1) ;

pstmt. setInt(1, 50);

ResultSet rs = pstmt. executeQuery() ;

while (rs .next()) {

int mid = rs.getInt(1) ;


4、分页查询

Class.forName(DBDRIVER);//进行数据库驱动的加致

Connectionconn= DriverManager.getConnection(DBURL,DBUSER,DBPASSNORD);1/使用“?”填充的占位符只有数据才可以使用,而对于列是无法使用的

String sql = "SELECT * FROM("

+"SELECT mid,name, age,birthday, note,ROWNUM rn "

+"FROM member WHERE " + column + " LIKE ? AND ROWNUM<=? ) temp"

+" WHERE temp.rn>?";

Preparedstatementpstmt= conn.preparestatement(sql);pstmt.setstring(1,"%"+keyword+"%");

pstmt.setInt(2,currentPage* linesize);

pstmt.setInt(3,(currentPage - 1)* linesize); IResultset rs =pstmt.executeQuery(;

while (rs.next()) {

int mid =rs.getInt(1) ;

string name = rs.getstring(2);int age = rs.getInt(3);

Date birthday = rs.getDate(4) ;String note = rs.getstring(5);

System.out.println(mid + " " + name + "、" +age + "." +birthday + " " + note);

 

5、统计查询

public static final String DBUSER = "scott";

public static final string DBPASSWORD = "tiger";

public static void main(String[] args) throws Exception {

string column = "name” ; 1/在那个列上执行模糊查询

string keyword =“张”;1/关键字

Class.forName(DBDRIVER);//进行数据库驱动的加载

connection conn = DriverManager.getconnection(DBURL,DBuSER,DBPASSIORD);// 使用“?”填充的占位符只有数据才可以使用,而对于列是无法使用的

string sql = " SELECT COUNT(*) FROM member WHERE" + column +" LIKE ? " ;Preparedstatement pstmt = conn.prepareStatement(sql) ;

pstmt.setstring(1,"%"+keyword+"%");

Resultset rs = pstmt.executeQuery(O;if (rs.next())i

longl count = rs.getLong(1) ;system.out. println(count);

}

conn.close();

以上所给的几个开发代码是后续开发项目的核心基础部分,请牢固掌握

相关文章
|
1天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
29 6
|
11天前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
1天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
12 0
|
1月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
1月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
33 6
|
26天前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
1月前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
39 0
|
28天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
59 3
|
28天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
70 3
|
28天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
88 2