`
yk.yk
  • 浏览: 20208 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

不确定条件数据库查询代码

阅读更多
2011年5月30日  总结整理不确定条件数据库查询代码
代码就是这么写的,把能实现一类功能的函数方法总结成一个类,然后把这个类实现的功能扩充到最大,容错能力高,使程序尽可能的健壮。以下是代码:


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;


public class ConnectData {

public static Connection getConn(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/yao?user=root&password=root");
return con;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

public static Map[] executeQuery(String sql, List<String> list) throws SQLException {
Map[] maps = null;
Connection con = null;
ResultSet rs = null;
PreparedStatement ps = null;
try {
con = ConnectData.getConn();
if (con == null) {
throw new NullPointerException("获取当前数据库连接失败");
}
int count = ConnectData.countMatches(sql, "?");
if (list == null || list.size() != count) {
throw new IllegalArgumentException("数据库预编译时索引不匹配");
}
ps = con.prepareStatement(sql);
for (int i = 0; i < list.size(); i++) {
ps.setString(i + 1, (String) list.get(i));
}
rs = ps.executeQuery();
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
int rowCount = 0;
List result = new ArrayList();
while (rs.next()) {
Map map = new LinkedHashMap();
for (int i = 0; i < columnCount; i++) {
String value = rs.getString(i + 1);
map.put(meta.getColumnName(i + 1), (value == null) ? "" : value);
}
rowCount++;
result.add(map);
}

maps = (Map[]) result.toArray(new Map[result.size()]);
} finally {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (con != null)
con.close();
}
return maps;

}
public static int countMatches(String str, String sub) {
if (str.equals("") || sub.equals("")) {
return 0;
}
int count = 0;
int idx = 0;
while ((idx = str.indexOf(sub, idx)) != -1) {
count++;
idx += sub.length();
}
return count;
}

//yao数据库中的bed表包含id、bedId、roomId、isused四个字段
public static void main(String []agrs){
List list=new ArrayList();
list.add("2");//sql语句中 ?的指定的条件。。。
try {
//Map[] 数组中的每个Map元素存的是查出来的每条数据
Map[] map=ConnectData.executeQuery("select * from bed where roomId=?", list);
System.out.println(map.length);
for(int i=0;i<map.length;i++){
System.out.print(map[i].get("id"));
System.out.print(map[i].get("roomId"));
System.out.print(map[i].get("bedId"));
System.out.println(map[i].get("isused"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}

}
分享到:
评论

相关推荐

    数据库网页查询系统

    这些代码通常放在`src`目录下,包含处理用户输入、验证、数据库查询等功能。 5. **数据库连接**:建立应用程序与MySQL数据库之间的连接。这通常通过数据库连接池实现,以提高性能和资源管理。 6. **API设计**:...

    关于SQL数据库查询模块应用.pdf

    在实际应用中,查询功能是数据库管理系统不可或缺的一部分,对于提高数据检索效率和准确性至关重要。 #### SQL Server 2000简介 SQL Server 2000是由微软公司推出的一款基于Windows环境的数据库管理系统。它不仅...

    oracle 代码?数据库

    标签“oracle 代码 数据库,原厂”进一步确认了这个压缩包的内容与Oracle数据库紧密相关,并且是来自官方的,因此其可靠性较高,可能包含最新的API、最佳实践或者示例代码。 由于压缩包的文件名称列表只给出了...

    多种条件查询(VB6.0代码编写)

    在VB6.0编程环境中,实现多种条件查询是常见的需求,尤其在开发数据库应用程序时。这类查询通常涉及从数据源(如Access、SQL Server或Oracle)检索满足特定条件的数据记录。下面将详细介绍如何使用VB6.0进行多条件...

    informix 数据库错误代码

    - **解决方案**: 确认查询条件是否正确,并再次尝试查询。 13. **-112C ISAM: 当前记录不存在** - **错误描述**: 当前指针所指向的位置没有记录。 - **问题原因**: 当前指针位置不正确或文件为空。 - **解决...

    根据变量查询数据库

    使用变量查询数据库,分析师可以快速调整查询条件,检索出不同变量组合下的销售记录,进而分析出哪些产品在特定时间内表现较好,或者哪些营销活动对特定客户群体更加有效。这样的分析可以帮助企业做出更精准的库存...

    Delphi数据库模糊查询功能的改进

    3. **分步查询**:如果查询条件不确定,可以先进行粗略的模糊匹配,然后在初步结果中进行更精确的筛选。这样可以减少对数据库的压力。 4. **缓存策略**:对于经常被查询的数据,可以考虑使用缓存技术,将结果存储在...

    lotus数据库资料查询

    资料查询时,可以利用Lotus Notes/Domino的查询构建器,无需编写代码即可创建复杂查询。此外,通过使用Notes的Agent(代理)功能,可以自动化定期执行查询,生成报告,或者在满足特定条件时自动触发某些操作,提高...

    数据库课程设计 报告+程序代码

    - **查询操作**:SELECT语句用于检索数据,可能涉及各种查询条件和聚合函数。 - **更新和删除**:UPDATE和DELETE语句分别用于修改和删除表中的数据。 - **索引创建**:为了提高查询性能,可能会创建索引。 - **事务...

    C#347-多条件查询源代码

    在某些情况下,查询条件可能在运行时才确定。这时,可以使用表达式树(Expression Trees)或Dynamic LINQ库来构建动态查询。例如,使用Dynamic LINQ: ```csharp var conditions = new List&lt;string&gt; { "City == '...

    Access数据库操作源代码

    - **删除(Delete)**:删除操作使用DELETE语句,可能需要指定特定条件来确定要删除的记录。 - **修改(Update)**:UPDATE语句用于更新现有记录,通常配合WHERE子句定位要修改的记录。 - **查询(Select)**:...

    数据库大作业程序_sql_数据库_

    在本项目中,我们主要探讨的是一个基于SQL和数据库技术的电力数据分析系统——"天津市2018年发电量查询系统"。这个数据库大作业旨在设计并实现一个能够有效存储、管理和查询天津地区2018年电力生产数据的数据库应用...

    数据库查询SQL语言参考大全

    以上代码展示了如何在ASP中打开数据库连接、执行SQL查询并遍历结果。 **CHM文件**: `SQL语言参考大全.chm` 是一种Windows帮助文档,它通常包含索引、搜索功能和详细的教程,是学习和查阅SQL知识的好工具。通过这样...

    练习数据库

    首先,"源码"标签暗示了我们可能会接触到数据库管理系统的源代码或者与数据库交互的程序代码。了解源码可以帮助我们深入理解数据库的工作原理,学习如何编写SQL查询语句,以及如何使用API(应用程序接口)进行数据库...

    实验三_20202-8王衡 数据库的嵌套查询实验

    理解SQL和T-SQL的查询语句能够帮助我们编写出高效的数据库查询代码。 3. 单表简单查询:在数据库操作中,基础的查询方式就是对单张表进行查询。单表查询就是从一个表中直接选择满足条件的记录。例如,我们可以从...

    员工工作时间查询,用access数据库记录员工信息.VB6.0源代码

    开发者可能设计了一个包含输入字段(如员工ID或日期范围)的表单,用户可以通过这些字段输入查询条件,然后点击“查询”按钮,后台的VB代码会根据这些条件执行SQL查询,并将结果展示在列表或表格中。 此外,**数据...

    批量操作数据库代码

    ### 批量操作数据库代码详解 #### 一、概述 在数据库管理中,批量操作能够极大地提高数据处理效率,尤其是在需要对多个表或多个数据库执行相同类型操作的情况下。本篇文章将详细解析一个通过存储过程实现的批量...

    Oracle通用数据库存储过程代码--高效分页存储过程

    标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能。 #### 描述解析 描述部分简述了此存储过程的特点:“Oracle通用数据库存储...

    数据库设计报告及代码(图书管理系统) C++

    《数据库设计报告及代码(图书管理系统) C++》是一份关于使用C++语言实现图书管理系统的详细资料,其中涵盖了数据库设计的重要概念和技术。这个系统旨在有效地管理图书馆的图书信息,包括书籍的入库、借阅、归还...

    sqlServer数据库

    SQL Server 数据库是一种关系...总的来说,SQL Server数据库管理系统的使用涉及到许多方面,包括事务管理、查询优化、存储过程、视图、索引以及触发器等,这些都是数据库管理员和开发人员日常工作中不可或缺的知识点。

Global site tag (gtag.js) - Google Analytics