android sqlite插入数据不对应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android sqlite插入数据不对应相关的知识,希望对你有一定的参考价值。

一个表,有id,procode,proname,pronumber三个字段,插入procode字段(123,456),两部分数据 ,但是查询的时候,查procode字段查出来的的是id,(123,456)在proname里面是怎么回事;

数据库创建需要首次初始化,不过你的创建数据表是在helper的onCreate方法里面,此时表中还没数据只能执行添加,
你的那个意思就是所谓理解错了面向对象,你的思路就是启动activity,然后new个数据实例,然后系统会调用创建方法,然后你在执行添加操作,操作完之后你想继续查询,这是典型的面向过程
参考技术A 插入的是没有问题的,你把你查询的方法贴出来看看

如何将 SQLite 数据库(SQLite Firefox 扩展)连接到 Android 应用程序,以便 android 2.1 查询并插入数据库

【中文标题】如何将 SQLite 数据库(SQLite Firefox 扩展)连接到 Android 应用程序,以便 android 2.1 查询并插入数据库【英文标题】:How do I connect an SQLite database (SQLite Firefox extension) to an Android application, for android 2.1 to query and insert to the database 【发布时间】:2011-02-15 08:00:21 【问题描述】:

我正在开发一个 Android 应用程序,其中一些用户应该输入的功能:注册、定位医院位置、搜索消息(通过短信发送给注册用户)以及可以安排和预约。

到目前为止,所有活动都已完成。但是,我需要知道如何连接到数据库才能读取和存储这些数据。我使用的是 Android 2.1、Mac OS X 和 SQLite Firefox 扩展。

这是我必须连接到 SQLite 数据库的代码,我做错了什么?

package com.bitnuts.imom;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

public class DbManager extends SQLiteOpenHelper 

    private static final String DB_NAME = "iMom.sqlite";
    private static final String DB_PATH = "/data/data/com.bitnuts.imom/databases/";
    private static final Integer DB_VERSION = 1;
    private static final String TAG = "DbManager";
    private final Context context;
    private SQLiteDatabase db;
    private DbManager dbManager;

    public DbManager(Context context) 
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    

    public DbManager open() 
        dbManager = new DbManager(context);
        db = dbManager.getWritableDatabase();
        return this;
    

    @Override
    public void onCreate(SQLiteDatabase arg0) 

        createNewDatabase();
    

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) 

        // TODO Auto-generated method stub
    

    public void createNewDatabase() 
        InputStream assetsDB = null;
        try 
            assetsDB = context.getAssets().open(DB_NAME);
            OutputStream dbOut = new FileOutputStream(DB_PATH + DB_NAME);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = assetsDB.read(buffer)) > 0) 
                dbOut.write(buffer, 0, length);
            

            dbOut.flush();
            dbOut.close();
            assetsDB.close();
        
        catch (IOException e) 
        
    

【问题讨论】:

【参考方案1】:

您不能直接在应用程序中使用 SQLite 数据库。您需要进行一些修改。比如android_metadata表等。博文Using your own SQLite database in Android applications会帮到你。

【讨论】:

谢谢,这个教程正是我想要的。问候。【参考方案2】:

Android 上没有 JDBC 驱动,所以无法连接到网络上的数据库(SQLite 或其他):Android - Access to online Database SQlite

Android 带有一个嵌入式 SQLite 数据库,但这仅在设备内可用。

另外,请阅读why direct connection to databases from mobile devices is not recommended。

如果您需要在网络上存储/共享一些数据,那么通常的方法是在服务器上创建一个所有设备都可以连接的网络服务。一种非常流行的 Web 服务类型是 REST,在 Java 中是 quite easy to set up。

【讨论】:

感谢您的回答。我是一名学生,我在 android 模拟器上运行它。我在外部服务器上还没有任何东西。我还需要一个 REST 层才能与 localhost 上的数据库进行交互,还是有其他方法? Android上没有数据库驱动,所以无法连接数据库(设备上的嵌入式数据库除外)。所以,是的,您需要某种 Web 服务层来连接,REST 是更流行的一种。【参考方案3】:

我建议在 Android 上使用 ORMLite。有了它,实现变得简单多了。这是getting started documentation。

【讨论】:

以上是关于android sqlite插入数据不对应的主要内容,如果未能解决你的问题,请参考以下文章

在单击按钮时将数据插入 Android Studio 中的 SQlite 数据库

如何使用 android 中的 SQLite 扩展类在数据库中插入值?

无法在 SQLite 数据库 Android 上插入数据

我的 sqlite 数据库只插入一项 android studio (java)

将多个条目插入SQLite数据库android

如何从 android studio 中的 SQLite 插入中删除不需要的字符