我知道这个话题之前已被讨论过了.但我无法找到问题的解决方案,所以我会再问一次.我有创建数据库的问题.我复制了SQLiteOpenHelper的实现:
public class DBCreator extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "servision.db";
private static final int DATABASE_VERSION = 1;
private static final String INFO_TABLE ="create table INFO(key text,value text);";
public static final String GATEWAYS_TABLE = "GATEWAYS";
// Table name
public static final String TABLE = "events";
// Columns
public static final String TIME = "time";
public static final String TITLE = "title";
public DBCreator(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
try …Run Code Online (Sandbox Code Playgroud) 我见过的所有例子registerContentObserver()都是通过ContentProvider界面实现的.但Cursor有一个registerContentObserver()调用,所以我想也许Android人们已经把一些深刻的魔法放在一起,SQLite当活动结果集中的一行改变时,它允许在游标上获得更新.我做错了,或者没有这样的魔法.这是我正在使用的代码,期望是当我点击按钮更新第1行中的值时,我会得到一个onChange()回调.有任何想法吗?
public class MainActivity extends Activity {
private static final String DATABASE_NAME = "test.db";
public static final String TAG = "dbtest";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button make = (Button)findViewById(R.id.btn_make_record);
make.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
MyOpenHelper oh = new MyOpenHelper(v.getContext());
SQLiteDatabase wdb = oh.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("value", String.valueOf(System.currentTimeMillis()));
if (wdb.insert(MyOpenHelper.TABLE_NAME, null, cv) …Run Code Online (Sandbox Code Playgroud) 我正在使用sqlite3的fts4扩展来启用全文索引和文本数据搜索.它运作良好,但我注意到结果根本没有相关性.我想我已经习惯了Lucene.我已经看到了一些使用matchinfo()结果编写自定义排名方法的简短建议,但我不清楚这是如何完成的,或者是否有任何复杂的例子.别人怎么处理这个?
Sqlite有点令人沮丧.每次运行命令时,我都无法使用向上向下的向右箭头来检索以前键入的命令.有没有办法实现这个?
另一个问题:我有下表
CREATE TABLE resource (
resourceID INTEGER PRIMARY KEY AUTOINCREMENT,
resourceType STRING,
userID INTEGER DEFAULT -1
);
Run Code Online (Sandbox Code Playgroud)
我插入如下:
insert into resource values(null, "razor");
Run Code Online (Sandbox Code Playgroud)
但它不允许我这样做,因为我只插入了2列而没有为userID列指定任何内容.但我认为DEFAULT的意思是如果没有插入任何内容,则将值默认为-1.我在这里错过了什么吗?
完成将我的所有数据存储到sqlite后,它已经达到14 MB.这就是为什么我担心有些人无法从连接缓慢区域下载我的应用程序.有没有办法缩小sqlite数据库?
我有"food_db.sql"文件存储在/ res/raw文件夹中,它有大量的"插入".
我的问题是如何执行该文件并将数据导入我的Android应用程序中的sqlite数据库?
这是我的数据库代码.任何建议?
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL, " +
KEY_HOTNESS + " TEXT NOT NULL);");
// how do i exec the sql file and get the data into this DB table?
}
@Override …Run Code Online (Sandbox Code Playgroud) 我正在使用sqlite.org上提供的sqlite3库.
我有一些我想要存储在数据库中的unsigned longs.我不想自己构建查询并将其保持开放以进行某种注入(无论是否是偶然的).因此,我正在使用这些sqlite_bind_*函数来"清理"我的参数.
问题是对于无符号长整数,只有整数没有函数类型.
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
如果我无法以无符号方式存储它们,我肯定会有数字会溢出.
我自己需要自己管理吗?(即在插入数据库之前从db中选择或转换为signed类型后转换为无符号类型)
如果我自己必须自己管理,当比较真的意味着在无符号范围内时,如何做一些存储为有符号长整数的比较查询?
查看转换后的INTEGER数据类型,可以认为无符号长整数可以毫无问题地表示.
如果有其他可用解决方案,请赐教!谢谢!
嗨我安装了QLite Pro,但我无法连接到本地SQLite文件db我该怎么办?
要填写的字段是:
Name:
Host: requeire
UserName:
PassWord:
Database:
Port:
Run Code Online (Sandbox Code Playgroud) 这是我目前的sqlite代码:
Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME +
" where " + KEY_ownerID + " = ? ", new String[] { ownerID});
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我尝试添加多个这样的地方:
Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME +
" where " + KEY_ownerID + " = ?, " + KEY_partnerID + " = ?, " + KEY_advertiserID + " = ?, " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID }); …Run Code Online (Sandbox Code Playgroud)