1. 程式人生 > >SQL查詢資料查詢異常總結

SQL查詢資料查詢異常總結

   這裡面會不斷的更新我在原生SQL語句的時候發現的問題異常總結:

   (1)大小寫問題:
     比如你的建立表的時候語句如下:

db.execSQL("create table if not exists Person(_id Integer PRIMARY KEY AUTOINCREMENT,NAME varchar(32),AGE varchar(32))");
你的插入語句如下:
public boolean insert(List<Person> persons) {
        boolean flag = true;
        ContentValues values = new ContentValues();
        for (Person person : persons) {
            values.clear();
            values.put("name", person.getName());
            values.put("age", person.getAge());
            long person1 = mDb.insert("Person", null, values);
            flag = person1 > 0;
        }
        return flag;
    }
查詢語句如下:
 public List<Person> query() {
        List<Person> persons = new ArrayList<>();
        Cursor cursor = mDb.rawQuery("select * from Person", null);
        while (cursor.moveToNext()) {
            Person person = new Person();
            try {
                person.setName(cursor.getString(cursor.getColumnIndex("name")));
                person.setAge(cursor.getString(cursor.getColumnIndex("age")));
                persons.add(person);
            } catch (Exception e) {
                Log.i(TAG, e.toString());
            }
        }
        cursor.close();
        return persons;
    }
你會一直查詢不到資料,我這裡其實做了try catch ,如果不做try catch就會崩掉的,列印日誌如下:
java.lang.IllegalStateException: get field slot from row 2 col -1 failed
肯定會十分的不解,在debug的時候發現走到了查詢操作的person.setName哪裡,裡面的cursor.getColumnIndex返回的是-1,但是就TM想噴了,表裡面明明有這個欄位怎麼返回的是-1,其實你再仔細看看就會發現表裡面的“name”是大寫的NAME,而你這裡是小寫的。你改成大寫就會發現可以順利執行了:
public List<Person> query() {
        List<Person> persons = new ArrayList<>();
        Cursor cursor = mDb.rawQuery("select * from Person", null);
        while (cursor.moveToNext()) {
            Person person = new Person();
            try {
                person.setName(cursor.getString(cursor.getColumnIndex("NAME")));
                person.setAge(cursor.getString(cursor.getColumnIndex("AGE")));
                persons.add(person);
            } catch (Exception e) {
                Log.i(TAG, e.toString());
            }
        }
        cursor.close();
        return persons;
    }
改成大寫之後就能查詢到資料了。所以注意大小寫,在插入資料到表的時候是不區分大小寫的,但是在查詢的時候就會區分大小寫了。是不是很騷氣。

後面發現新的問題會再繼續新增進來的。



相關推薦

SQL查詢資料查詢異常總結

   這裡面會不斷的更新我在原生SQL語句的時候發現的問題異常總結:    (1)大小寫問題:      比如你的建立表的時候語句如下: db.execSQL("create table if not exists Person(_id Integer PRIMARY K

資料庫實驗五/SQL資料查詢

資料庫實驗五 本學期資料庫實驗,之前又看到別人寫的,但是有一部分有點小錯,於是還是自己上機實驗的程式碼比較靠譜,這裡貼出來供大家參考 ///// ///// 如果有錯誤 還望指出 //////// /////// SQL的資料查詢 一、實驗目的 1. 熟練使用S

[MS Access+MySQL系列]如何利用phpMyAdmin介面進行資料表匯入、SQL簡易資料查詢資料表刪除等操作?

承接[MS Access+MySQL系列]如何在phpMyAdmin設定使用者帳號和密碼文章,當後端資料庫搭建完成後,如何在phpMyAdmin中匯入資料表、進行簡易SQL查詢和資料表刪除等等操作,使得未來前端操作人員進行存取作業,成為下一步重點工作。 本文以虛構的客戶資料為例,說明如何將客

SQL資料查詢如何進行優化?

1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by  涉及的列上建立索      2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:引。 select id f

Sql Server學習】Sql Server資料查詢(三)

(1)查詢資訊系(IS)的所有學生的姓名,所選課程號及成績。 select Sname,Cno,Grade from Student,SC where Sdept IN (select

SQL資料查詢如何進行優化?sqlserver和oracle整理

SQL 大資料查詢如何進行優化?整理 原則,多數資料庫都是從 左到右的順序處理條件,把能過濾更多資料的條件放在前面,過濾少的條件放後面 SQL1: select * from employee             where salary >1000  

Sql Server學習】Sql Server資料查詢

(1)查詢資訊工程學院(IS)的所有學生的姓名。 select sname,sdept from student where sdept='is' (2)查詢學生選課成績合格的成績資訊。select grade from sc where grade>=60 (3

oracle ebs + PL/SQL實現將查詢出來的資料儲存為csv格式檔案,並定期上傳到FTP伺服器學習總結

目的 oracle ebs + PL/SQL實現將查詢出來的資料儲存為csv格式檔案,並定期上傳到FTP伺服器。 用到oracle utl_file包,FTP檔案上傳 第一次接觸這種型別的任務,也是在網上查詢了很多參考資料才弄出來。 下面是具體的例子。

MYSQL 按時間動態查詢資料sql

在開發種使用時間動態查詢資料的需求很多,下面展示mysql的查詢方式: 對一個表種的一個時間欄位查詢: select * from mw_bill where YEAR(recharge_time)=2018 and MONTH(recharge_time)=09; recharge_t

用JAVA連線SQL實現查詢資料

顯示所有學生程式碼 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html>

SQL Server 資料分頁查詢

最近學習了一下SQL的分頁查詢,總結了以下幾種方法。 首先建立了一個表,隨意插入的一些測試資料,表結構和資料如下圖: 現在假設我們要做的是每頁5條資料,而現在我們要取第三頁的資料。(資料太少,就每頁5條了) 方法一: select top 5 * from [Stu

Django資料查詢方法總結

__exact 精確等於 like ‘aaa’__iexact 精確等於 忽略大小寫 ilike ‘aaa’__contains 包含 like ‘%aaa%’__icontains 包含 忽略大小寫 ilike ‘%aaa%’,但是對於sqlite來說,contains的作用效果等同於icontains。_

資料庫知識整理 - 關係資料庫標準語言SQL(二)- 超良心的資料查詢整理!

主要內容 資料查詢 基本語法 單表查詢 1. 選擇表中的若干列 2. 選擇表中的若干元組 3. ORDER BY子句 4. 聚集函式 5. GROUP BY子句 連線查詢 1. 等值與非等值連線查詢 2. 自身連線 3. 外

Atitit redis使用場合總結 使用場景 目錄 1.1. 3. Session 儲存 1 1、 配置資料查詢 1 2. 排行榜應用,取TOP N操作 1 1.2. 1、查詢

Atitit redis使用場合總結 使用場景          目錄 1.1. 3. Session 儲存 1 1、 配置資料查詢 1 2. 排行榜應用,取TOP N操作 1 1.2.     1

mysql-使用Navicat匯出sql查詢資料

注意點:數字型別如果過長,匯出到Excel是科學技術方 解決方案:cast(需要轉換的值 as char(19)) 轉換     SELECT     cast(sod.sku_sid as char(19)) skuSi

mybaits(查詢與別名、日誌框架顯示sql語句、物件屬性和資料庫表字段不匹配resultMap使用、mysql資料查詢分頁、執行sql和儲存過程、動態SQL語句)

主要是各種配置檔案,建議把整個專案搬到自己電腦上慢慢看。 建立maven專案 首先是各種配置檔案: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m

SQL語句彙總(二)——資料修改、資料查詢

SQL語句第二篇,不說廢話直接開始吧。 首先,建立一張t_student表 CREATE TABLE `t_student` ( `student_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `student_name` varch

mysql sql語句查詢指定資料查詢資料列表中排名第幾

需求是這樣的,我們有個排名列表,需要查詢出當前條件下的指定人員的資訊是在排序後的第幾條。 兩種sql解決方案 SELECT a.* FROM  (SELECT     *,     (@i :[email protected] + 1) AS No FRO

ArcEngine 資料查詢資料操作總結

資料查詢 查詢地理資料庫表 查詢geodatabase物件的三種常見的介面是IQueryFilter、ISpatialFilter、IQueryDef介面。每個介面都有不同的功能,如下表所示: Requirement IQueryFil

SQL Server 中資料查詢注意事項

1.查詢語句不用區分大小寫,而且即使每張表的表名或者列名出現大寫字母,在寫查詢語句的時候也不用區分大小寫,查詢結果保持一致,所以查詢語句小寫即可。 2.在寫查詢語句的時候列名不需要帶單引號,數值型的字串不用帶引號,需要帶引號的是字元型和漢字型的字串。 3.如果既要用到group by子句,也要用到orde