sqlite-Android关于数据库的问题

问题描述

Android关于数据库的问题

谁帮忙看看,写入是成功了,但是获取的时候就获取不到数据啊!!!

package com.example.MySqlite;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MyActivity extends Activity {
private ArrayList> list;
private DBHelper dbHelper;

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    dbHelper = new DBHelper(this);
    getData();
    inser();

    lookFor();
}

private void lookFor() {
    List<Map<String,String>> map = new ArrayList<Map<String, String>>();
    SQLiteDatabase database = dbHelper.getReadableDatabase();
    Cursor cursor = database.query("notes",null,null,null,null,null,null);
    while(cursor!=null && cursor.getCount()>0){
        Map<String,String> has = new HashMap<String, String>();
        String name =cursor.getString(1);
        Log.d("NAME",name);
        String age = cursor.getString(2);
        String sex =cursor.getString(3);
        has.put("name",name);
        has.put("age",age);
        has.put("sex",sex);
        map.add(has);
    }

}

private void inser() {

   SQLiteDatabase sql=dbHelper.getWritableDatabase();

    for(int i=0;i<list.size();i++){
        ContentValues contentValues = new ContentValues();
        long id = i;
        String name = list.get(i).get("name");
        String age = list.get(i).get("age");
        String sex = list.get(i).get("sex");
        contentValues.put("id",id);
        contentValues.put("name",name);
        contentValues.put("age",age);
        contentValues.put("sex",sex);
        long hasSuccess = sql.insert("notes", null, contentValues);
    }

}

private void getData() {
    list = new ArrayList<Map<String, String>>();
    for(int i =0;i<5;i++){
        if(i==0){
            Map<String,String> map = new HashMap<String, String>();
            map.put("name","kity");
            map.put("age","25");
            map.put("sex","男");
            list.add(map);
        }else if(i==1) {
            Map<String,String> map = new HashMap<String, String>();
            map.put("name","Dave");
            map.put("age","21");
            map.put("sex","女");
            list.add(map);
        }else if(i==2) {
            Map<String,String> map = new HashMap<String, String>();
            map.put("name","Marces");
            map.put("age","26");
            map.put("sex","女");
            list.add(map);
        }else if(i==3) {
            Map<String,String> map = new HashMap<String, String>();
            map.put("name","Rose");
            map.put("age","12");
            map.put("sex","男");
            list.add(map);
        }else if(i==4) {
            Map<String,String> map = new HashMap<String, String>();
            map.put("name","LiLin");
            map.put("age","35");
            map.put("sex","女");
            list.add(map);
        }

    }
}

}

package com.example.MySqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**

  • Created by on 15-6-4.
    */
    public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context) {
    super(context,"mynote.db",null,1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table if not exists notes(" +
    " id long key," +
    " name varchar(255)," +
    " age varchar(255)," +
    " sex varchar(255))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
    }

解决方案

试试把下面的代码:

        String name =cursor.getString(1);
        Log.d("NAME",name);
        String age = cursor.getString(2);
        String sex =cursor.getString(3);

换成下面这个样子的

            int colums = cursor.getColumnCount();

            while (cursor.moveToNext()) {
                Map<String,String> map = new HashMap<String,String>();
                for (int i = 0; i < colums; i++) {
                    String col_name = cursor.getColumnName(i);
                    String col_value = cursor.getString(cursor
                            .getColumnIndex(col_name));
                    map.put(col_name, col_value);
                }
                listmap.add(map);
            }

解决方案二:

在Cursor cursor = database.query("notes",null,null,null,null,null,null);下个断点调试下。

解决方案三:

list = new ArrayList>();这个放到函数外

解决方案四:

把SQLite的数据库文件拷出来,用第三方可视化工具查询一下,看数据是否在库表中存在。

时间: 2024-08-31 17:15:56

sqlite-Android关于数据库的问题的相关文章

android的sqlite 上传数据库到ftp,再下载下来后,为什么打不开?

问题描述 android的sqlite 上传数据库到ftp,再下载下来后,为什么打不开? android的sqlite数据库,存在data/data/packagename/databases/下, 用org.apache.commons.net.ftp.FTPClient 上传数据库到ftp,再下载下来后,为什么提示损坏,打不开? 我测试过,ftp上的文件是正确的,下载也成功了,文件有更新,文件的大小和ftp上的也是一样的.但是为什么打不开呢?用sqlexpert打开sqlite,提示data

SQLite在查询数据库运行崩溃

问题描述 SQLite在查询数据库运行崩溃 这是我创建的数据库 public class BlackNumberOpenHelper extends SQLiteOpenHelper { private static final String TAG = "BlackNumberOpenHelper"; /** * @param context/ public BlackNumberOpenHelper(Context context) { super(context, "b

这个利用sqlite写的数据库为什么退出应用后再进去数据库就无法找到了啊

问题描述 这个利用sqlite写的数据库为什么退出应用后再进去数据库就无法找到了啊 package com.sample.Sample_8_4; import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.DialogInterface;import android.database.Cursor;import andr

sqlserver,sqlite,access数据库链接字符串整理_C 语言

SqlServer:string connection = "server=32.1.1.48;database=数据库名;user=sa;password=sa2008"; access 2007: //无密码的连接字符串 string conStr = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=E://111.accdb;Persist Security Info=False"; //有密码的连接字符串 str

还原Android彩信数据库

几周前在做Android彩信数据库还原时遇到了一个很棘手的问题,就是Android的彩信数据库不向短信数据库那样可以方便的用一条insert语句创建一条记录,而我没有得到许可去修改Android平台的彩信应用的原代码,所以我不得不另寻它径.在下面我会尽我可能用尽量简洁的语言描述整个解决的过程. 1 彩信数据库 问题是这样的,我备份了Android的彩信数据库,即mmssms.db文件,并且希望能成功把彩信部分的数据信息还原到还原数据库中. 在mmssms.db中与彩信相关的表有 Pdu表: 记录

android/java 数据库中数据如何生成选择题

问题描述 android/java 数据库中数据如何生成选择题 现有数据库中数据形式是这样的:key 名字:translation 解释: 如何**随机**取出其中一条数据的key为题目,translation为一个正确选项,再取出另外3条数据的translation作为错误选项,生成选择题,并且正确选项会随机出现在ABCD任意位置? 哪位大神可以解答一下我的问题?提供一个思路...先谢谢啦~ 解决方案 首先获取随机题目:随机题目id可以使用这样获取int a=(int) (Math.rando

a...-怎么用baseadapter将sqlite中的数据库适配到一个fragment里的listview?

问题描述 怎么用baseadapter将sqlite中的数据库适配到一个fragment里的listview? 想用baseadapter添加listview中图片资源,同时通过baseadapter为listview中按钮设置监听事件,有那位好心的大侠帮帮忙! 解决方案 重写一个适配器,把数据库的数据遍历出来 存在一个集合里面,再setAdapter 就行了 解决方案二: 你自少要说下数据库数据是什么样的 你要的adapter需要那些参数 解决方案三: 你自少要说下数据库数据是什么样的 你要的

android 关于数据库的问题

问题描述 android 关于数据库的问题 log中出现了一大堆 (284) automatic index on UserConfig_TraRequestType(language) 这种东西. 但是没崩掉,可以正常运行,想问问大神这是什么东西?有隐患吧... 解决方案 解决Android数据库锁的问题Android数据库文件路径问题关于android开发连接数据库的问题---------------------- 解决方案二: 这是自动索引的意思吧

关于android创建数据库后找不到数据表

问题描述 关于android创建数据库后找不到数据表 新手求教,用cmd运行splite>.table没反应,select * from xxx时显示no such table.找到数据库的文件导出后用记事本打开显示乱码..怎么办,求大神指点 解决方案 说明你只创建了数据库没有创建表吧:你可以将导出来的数据库文件用数据库打开看下里面有没有表 解决方案二: sdk中有一个叫 platform-tools 的文件夹里面的 sqlite3 可以用来查看导出的数据库文件 具体的操作是 打开sqlite3

浅谈android中数据库的拷贝

SQLiteDatabase不支持直接从assets读取文件,所以要提前拷贝数据库.在读取数据库时,先在项目中建立assets文件夹用于存放外部文件,将数据库文件拷到该目录下. 代码方法: /** * 拷贝数据库至file文件夹下 * @param dbName 数据库名称 */ private void initAddressDB(String dbName) { //1,在files文件夹下创建同名dbName数据库文件过程 File files=getFilesDir();//获取/dat