sqlite-用where条件查询SQLite数据库

问题描述

用where条件查询SQLite数据库

在数据库中用string作为where条件查询数据库,程序就会关闭。如果换成数字作为条件,就没问题。帮我看一下代码:

public ArrayList<Contact> getAvailableList()
{
    // TODO Auto-generated method stub
    ArrayList<Contact> results = new ArrayList<Contact>();
    String[] columns = new String[]{KEY_NAME, KEY_NUMBER, KEY_STATUS};
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"=available" , null, null, null, KEY_NAME);
    String sName = "";
    String sNum = "";
    String status = "";
    int iName = c.getColumnIndex(KEY_NAME);
    int iNumber = c.getColumnIndex(KEY_NUMBER);
    int iStatus = c.getColumnIndex(KEY_STATUS);
    Contact contact;
    for(c.moveToFirst(); ! c.isAfterLast(); c.moveToNext())
    {
        contact = new Contact();
        sName += c.getString(iName);
        sNum += c.getString(iNumber);
        status += c.getString(iStatus);
        contact.setName(sName);
        //contact.setPhoneNumber(sNum);
        contact.setPhoneNumber("0".concat(sNum));
        contact.setStatus(status);
        results.add(contact);
        sName = "";
        sNum = "";
        status = "";
    }
    return results;
}

解决方案

在SQL中要把字符安用括号括起来的。像这样:

//                                                         添加这个 v         v
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"='available'",
        null, null, null, KEY_NAME);

如果你用动态数据,可以用selectionArgs参数:

String status = "available";
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"=?",
        new String[] {status}, null, null, KEY_NAME);

这个方法可以保护你不受SQL注入的影响。

解决方案二:

楼主写错了,你可能没弄明白这个方法中的参数含义;

你可以这样写试试:

String[] columns = { KEY_NAME, KEY_NUMBER, KEY_STATUS };
String selection = KEY_STATUS + "=?";
String[] selectionArgs = { "available" };
String orderBy = KEY_NAME + " DESC"; // OR ASC
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, selection, selectionArgs, null, null, orderBy);

这样才能查到数据;
解释一下,query方法在执行中,会被Android自动解析为一条标准的SQL,即:

SELECT
KEY_NAME, KEY_NUMBER, KEY_STATUS
FROM
DATABASE_TABLE
WHERE KEY_STATUS = 'available'
ORDER BY KEY_NAME DESC;

解决方案三:

把(出错时)执行前的sql语句打印出来,可能出错了
我也没看到where啊,关闭会提示出错log的,怎么说的

时间: 2024-09-17 05:44:24

sqlite-用where条件查询SQLite数据库的相关文章

android sqlite使用之模糊查询数据库数据的三种方式

android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把: package com.example.utils; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import

C#简单查询SQLite数据库是否存在数据的方法_C#教程

本文实例讲述了C#简单查询SQLite数据库是否存在数据的方法.分享给大家供大家参考,具体如下: //sqlite数据库驱动组件 using System.Data.SQLite; //插入数据库函数 int SQLquery(string sql) { try { //打开数据库 SQLiteConnection conn = new SQLiteConnection(); SQLiteConnectionStringBuilder connstr = new SQLiteConnection

python查询sqlite数据表的方法

  这篇文章主要介绍了python查询sqlite数据表的方法,涉及Python操作SQLite数据库的基本技巧,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 import sqlite3 as db conn = db.connect('mytest.db') conn.row_factory = db.Row cursor = conn.cursor() cursor.execute("select * from person") rows = cursor.fet

【ANDROID游戏开发十三】(保存游戏数据 [下文])详解SQLITE存储方式,并把SQLITE的数据库文件存储在SD卡中!!!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/329.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

SQLite教程(五):数据库和事务_SQLite

一.Attach数据库:      ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上.如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name.最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的.见如下示例:   复制代码 代码如下:     sqlite> CREATE TABLE

求大神指点新人:VS制作条件查询数据库

问题描述 使用软件VS2010SQL2008:想要事现以网页查询SQL数据库.在Default.aspx里面有一个textbox和buttot二个控件.通过buttot双击条件查询textbox文本框数据相对应的数据.计算机名为xcSQL数据库名为:currentdb里面的VIP表.将查好的返回到GRIDVIEW控件显示在页面上. 解决方案 解决方案二:这有什么难的,任何一个简单的程序都有这个功能,任何一本书上也都有.

新手求教 php查询 遍历数据库 多条符合条件数据输出的记录只有一条

问题描述 新手求教 php查询 遍历数据库 多条符合条件数据输出的记录只有一条 ($result = 0;//搜索结果默认值(不搜索) 1=正确搜索到结果2=搜索到结果但非第一次3=没搜索到结果4=系统提示) if($msg0 == 1){ ///号信息 $sql=""select * from tgs_code where bianhao='$bianhao'""; //sql语句在数据库查询可返回多条记录 ///echo $sql; $res=mysql_que

sql server-java界面里怎么将从数据库中按条件查询的结果显示在界面里。。急求

问题描述 java界面里怎么将从数据库中按条件查询的结果显示在界面里..急求 AirSelectpage.java: import javax.swing.*; import java.awt.event.*; import java.sql.*; public class AirSelectpage extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = -3

struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询

问题描述 struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询 struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询,多张表按条件查询 我要例子 主要的功能是显示数据库的内容 请看清要求!!! 解决方案 用 户 解决方案二: HIBERNATE中的ORG关联 解决方案三: 先搭个框架,再实现 解决方案四: 可以参考马士兵的struts2 视频,讲解的非常详细,如果需要给以给你 解决方案五: http://blog.csdn.net/lisq037/articl