标签: sqliteopenhelper

如何将一个长而单一的SQLiteOpenHelper分成几个类,每个表一个

我知道这已经被问过几次了,但是在所有这些问题中,OP和回答者都没有提供清晰的例子。

所以我想问的是是否有这样的课程

public class MyDatabaseDB {

    // database constants
    public static final String DB_NAME = "mydatabase.db";
    public static final int    DB_VERSION = 1;

    // list table constants
    public static final String LIST_TABLE = "list";

    public static final String LIST_ID = "_id";
    public static final int    LIST_ID_COL = 0;

    public static final String LIST_NAME = "list_name";
    public static final int    LIST_NAME_COL = 1;

    // task table constants
    public static final String TASK_TABLE = "task";

    public static final String TASK_ID = "_id"; …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper android-sqlite

2
推荐指数
1
解决办法
980
查看次数

如何让greenDAO在sdcard上创建数据库?-安卓

我想将greenDAO用作sqlite DB ORM

但是我的数据库应该位于sdcard的特定文件夹中,例如 /sdcard/myapp/database.sqlite

那么如何使用greenDAO选择要创建的数据库文件夹?

android sqliteopenhelper greendao

2
推荐指数
1
解决办法
2186
查看次数

如何从联系人数据库中读取和存储所有联系人到列表?

我试图从联系人表中读取联系人并将所有联系人存储到列表变量中.但是无法弄清楚为什么它似乎无法正常工作......在执行时关闭一个强制关闭.需要发送联系人通过json对象到Web服务器.

      private static final String TABLE_CONTACTS = "contacts";



// contacts JSONArray
JSONArray contacts = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    List<contact> l=new ArrayList<contact>();
    String query="SELECT * FROM"+ TABLE_CONTACTS;

     DBHelper help= new DBHelper(getBaseContext()); 
    SQLiteDatabase db=help.getWritableDatabase();
    Cursor cursor = db.rawQuery(query, null);
    if(cursor.moveToFirst())
    {
        do{
            contact contact = new contact();
            contact.setID(Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            contact.setPhoneNumber(cursor.getString(2));
            Toast.makeText(this,contact.name,Toast.LENGTH_LONG);
             l.add(contact);
        }
        while(cursor.moveToNext());
    }
Run Code Online (Sandbox Code Playgroud)

和清单文件有2个权限

     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
Run Code Online (Sandbox Code Playgroud)

和DBHelper类,用于将sqlitopenhelper扩展为getWritableDatabase ..

    class DBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "contactsManager";

   // Contacts …
Run Code Online (Sandbox Code Playgroud)

android android-contacts sqliteopenhelper

1
推荐指数
1
解决办法
3101
查看次数

表未在Android中的SQLite数据库中创建

实际上,当我创建数据库时,代码运行良好,我的第一个表(table_userprofile)及其相关字段.

但是一旦我onCreate()在Helper Class中的方法下创建了另一个表(table_bloodgroup).

它开始显示第二个表没有创建..并且弹出了许多与未创建数据库相关的异常.

以下是CODE:

package com.example.databaseexample;

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

    // All Static variables

    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_NAME = "bloodDonation";

    // Contacts table name
    private static final String TABLE_USER="table_userprofile";
    private static final String TABLE_BLOODGROUP="table_bloodgroup";

    //UserProfile Table Columns names
    private static final String KEY_ID="id";
    private static …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper

1
推荐指数
1
解决办法
9298
查看次数

为什么SQLiteOpenHelper导致IllegalArgumentException数据库无法打开?

首先,这里所有类似的帖子都没有帮助.

在AsyncTask中,我检查应用程序启动是否是第一次启动,这意味着我检查是否有数据库.我希望通过表格查询来做到这一点.这是正在执行的内容:

@Override
public List<Entity> loadAll(Entity markerEntity)
{
    Log.i(TAG, "trying to load all entities of type " + markerEntity.getTable());

    List<Entity> results = new LinkedList<Entity>();

    SQLiteDatabase db = defaultSQLiteOpenHelper.getWritableDatabase();

    Cursor cursor = db.query(markerEntity.getTable(), markerEntity.getAllColumns(), null, null, null, null, null);    
    cursor.moveToFirst();

    while (!cursor.isAfterLast())
    {
        Entity result = markerEntity.createNewInstance(cursor);
        results.add(result);

        cursor.moveToNext();
    }

    db.close();

    return results;
}
Run Code Online (Sandbox Code Playgroud)

IllegalArgumentException崩溃:数据库未打开发生在此行上.

SQLiteDatabase db = defaultSQLiteOpenHelper.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)

它恰好发生在方法(见下文)createAllTables上.

文件说:

创建和/或打开将用于读写的数据库.第一次调用它时,将打开数据库并调用onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int)和/或onOpen(SQLiteDatabase).

在我看来,它应该执行我的DefaultSQLiteOpenhelper并创建所有数据库表,但它不会这样做:

public class DefaultSQLiteOpenHelper extends SQLiteOpenHelper implements ISQLiteOpenHelper
{
    private static …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite

1
推荐指数
1
解决办法
1939
查看次数

E/SQLiteLog: (1) 没有这样的表:示例

数据库助手

public class DatabaseHelper extends SQLiteOpenHelper
{
public static final  String DBNAME = "sample.sql";
public static final String DBLOCATION = null;/*"/data/data/com.example.final_view.database/databases/"*/
public static final int DATABASE_VERSION = 3;
public static final String TABLE_NAME = "sample";
public static final String S_BUSSTOP_ID="BUSSTOP_ID";
public static final String S_BUSSTOP_NAME="BUSSTOP_NAME";
public static final String S_NAME_E="NAME_E";
public static final String S_LONGITUDE="LONGITUDE";
public static final String S_LATITUDE="LATITUDE";
public static final String S_ARS_ID="ARS_ID";
public static final String S_NEXT_BUS="NEXT_BUS";
public static final String S_NUM="NUM";
public static final String S_STATION_LIST_ID="STATION_LIST_ID"; …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite

1
推荐指数
1
解决办法
6674
查看次数

从其他类调用子类方法 - Android(java)

我有一个工作琐事游戏,我现在正试图实现一个高分.我创建了一个扩展SQLiteOpenHelper的子类DatabaseHelper类.我试图从另一个类调用子类DatabaseHelper中的方法,并得到错误.这些类不会编译,因此没有LogCat输出.我在代码中评论了错误.

代码结构建议也很受欢迎!

Highscores.java

public class Highscores extends Activity {

    DatabaseHelper dh;
    SQLiteDatabase db;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        dh = new DatabaseHelper(context);
    }

    public class DatabaseHelper extends SQLiteOpenHelper { 

        public DatabaseHelper(Context context) { 
            //code
        }

        public boolean check(long score, int percentage) {
            //code
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Results.java

public class Results extends Activity {

    DatabaseHelper dh;  //Error:  "DatabaseHelper cannot be resolved to a type."

    public void onCreate(Bundle savedInstanceState) {

        dh = new DatabaseHelper();  //Error:  "DatabaseHelper cannot be resolved to a …
Run Code Online (Sandbox Code Playgroud)

java database android subclass sqliteopenhelper

0
推荐指数
1
解决办法
6230
查看次数

如何从SQLIte预制数据库中获取一个随机行

我有一个在资产中导入的试用数据库,它是预先填充的.它有6列:_ID,QUESTION,ANSWER,OPTION1,OPTION2,OPTION3,我现在有10行.我正在做类似测验的事情.我想要的是当我打开测验活动以读取一个随机行,然后将setText设置为我创建的4个按钮,button1 = ANSWER,button2 = OPTION1,button3 = OPTION2,button = OPTION3,再次随机.我知道如何将文本设置为按钮和所有,我只想知道如何从数据库中读取所有内容.我有导入数据库的DataBaseHelper类:

package rs.androidaplikacijekvizopstekulture;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import rs.androidaplikacijekvizopstekulture.Pitanja;

public class DataBaseHelper extends SQLiteOpenHelper
{
private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window
//destination path (location) of our database on device
private static String DB_PATH = ""; 
private static String DB_NAME ="pitanja";// Database name
private static final int DATABASE_VERSION …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite

0
推荐指数
1
解决办法
1572
查看次数

如何在SQlite Android中自动减少主键值

我在android SQLite中有一个表,我试图弄清楚如何重置KEY_ID,我读到:DELETE FROM tablename应该删除所有内容并将自动增量字段重置为0但是当我这样做时它只是删除数据.插入新记录后,自动增量会在删除之前从中断处继续.我已经实现了一个longitemclicklistner列表,它获取了位置,我想从列表中删除特定项目.这是我的代码

public void deleteContact(Contact contact) {
        SQLiteDatabase db = this.getWritableDatabase();
        getWritableDatabase().delete(TABLE_CONTACTS, KEY_ID + " = ?",
                new String[] { String.valueOf(contact.getID()) } );


        db.close();
    }
Run Code Online (Sandbox Code Playgroud)

这是代码 onlongclicklistner

 public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                     int pos, long id) {
                // TODO Auto-generated method stub

                Log.v("long clicked","pos"+" "+pos);

                final int p=pos+1;

                final AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                b.setIcon(android.R.drawable.ic_dialog_alert);
                b.setMessage("Are you sure you want to DELETE this Entry?");
                b.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface …
Run Code Online (Sandbox Code Playgroud)

sqlite android sqliteopenhelper android-sqlite

0
推荐指数
1
解决办法
1422
查看次数

SQLite数据库中的第二个表未创建

我知道以前有很多关于这个主题的问题,但这些问题/答案都没有帮助.我正在创建一个Android应用程序,我有一个包含多个表的数据库.第一个成功创建,但第二个从未创建.当我稍后尝试访问该表时,它给出了"表不存在"错误.我曾多次尝试更改数据库名称,更改数据库版本,清除缓存和数据,卸载并重新安装我的应用程序.什么都行不通.我使用sqlite浏览器查看我的数据库,第二个表不存在.我已经尝试在增加版本之后onCreate在我的方法中添加断点SQLiteDatabaseOpenHelper.调试器直接通过.以下是适用的代码:First Table DBHelper:

public class SessionDescriptionsDatabaseOpenHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "database.db";
private static final String TABLE_SESSIONDESCRIPTIONS = "session_descriptions";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_TITLE = "title";
private static final String COLUMN_DESCRIPTION = "description";

public SessionDescriptionsDatabaseOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {


    // Database creation SQL statement
    final String DATABASE_CREATE = "create …
Run Code Online (Sandbox Code Playgroud)

database sqlite android multiple-tables sqliteopenhelper

0
推荐指数
1
解决办法
871
查看次数