我知道这已经被问过几次了,但是在所有这些问题中,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) 我想将greenDAO用作sqlite DB ORM
但是我的数据库应该位于sdcard的特定文件夹中,例如 /sdcard/myapp/database.sqlite
那么如何使用greenDAO选择要创建的数据库文件夹?
我试图从联系人表中读取联系人并将所有联系人存储到列表变量中.但是无法弄清楚为什么它似乎无法正常工作......在执行时关闭一个强制关闭.需要发送联系人通过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) 实际上,当我创建数据库时,代码运行良好,我的第一个表(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) 首先,这里所有类似的帖子都没有帮助.
在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) 数据库助手
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) 我有一个工作琐事游戏,我现在正试图实现一个高分.我创建了一个扩展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) 我有一个在资产中导入的试用数据库,它是预先填充的.它有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 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) 我知道以前有很多关于这个主题的问题,但这些问题/答案都没有帮助.我正在创建一个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)