iPhone上的任何SQLite数据库都只是与应用程序捆绑在一起的文件.任何人都可以相对简单地提取此文件并进行查询.
您对加密数据库中存储的文件或数据有何建议?
编辑:该应用程序是一个将与其他用户玩的游戏.有关用户相对优势和劣势的信息将存储在DB中.我不希望用户能够在手机上破坏他们的声誉/权力等,然后赢得比赛/联赛等(注意:试图模糊,因为这个想法是在NDA下).
我不需要军事加密,我只是不想用纯文本存储东西.
编辑2:稍微澄清一下,我的主要目标是
我有一个相当大的数据集,并希望将其存储在一个文件而不是RDBMS中.
数据集中的主表只有超过1M行,30列和大约600Mb的CSV格式.
我在考虑SQLite.SQLite值得调查这个大小的数据集吗?
我在网上找不到关于如何在数据库上执行SQLite 3 vacuum命令的任何示例.
我以简化和扩展的方式重新提出这个问题.
考虑这些sql语句:
create table foo (id INT, score INT);
insert into foo values (106, 4);
insert into foo values (107, 3);
insert into foo values (106, 5);
insert into foo values (107, 5);
select T1.id, avg(T1.score) avg1
from foo T1
group by T1.id
having not exists (
select T2.id, avg(T2.score) avg2
from foo T2
group by T2.id
having avg2 > avg1);
Run Code Online (Sandbox Code Playgroud)
使用sqlite,select语句返回:
id avg1
---------- ----------
106 4.5
107 4.0
Run Code Online (Sandbox Code Playgroud)
和mysql返回:
+------+--------+
| id | avg1 …Run Code Online (Sandbox Code Playgroud) 我是Android SQLite的新手.这就是我所拥有的:
db.sqlite在我的assets文件夹中.db.sqlite将替换为新的数据库(我将从项目中删除旧文件并添加新文件).我关心的是:
这是我扩展SQLiteOpenHelper类的方法.我按照我在互联网上找到的教程:
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.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseHelper extends SQLiteOpenHelper{
//The Android's default system path of your application database.
private static String DB_PATH = "/data/data/com.mydomain.myapp/databases/";
private static String DB_NAME = "db.sqlite";
private SQLiteDatabase myDataBase;
private final Context myContext;
/* …Run Code Online (Sandbox Code Playgroud) W/CursorWindow(15677):窗口已满:请求分配2195889字节,可用空间2096720字节,窗口大小2097152字节
我知道有app内存可用:
D/dalvikvm(15677):GC_FOR_ALLOC释放9K,30%免费17050K/24291K,暂停45ms
因此,它纯粹是做光标大小的窗口,阅读时blob进入byte[].
我使用内置方法从游标中读取blob.
try
{
c = rdb.query("Photos", new String[]{"photo"}, "id = ?", new String[]{""+photoID}, null, null, null);
if(c.moveToFirst())
{
byte[] tArray = c.getBlob(c.getColumnIndex("photo")); // THIS LINE ERRORS
}
}catch(Exception e)
{
e.printStackTrace();
}
c.close();
return tArray;
Run Code Online (Sandbox Code Playgroud)
有没有解决的办法?窗口大小似乎限制为2097152字节.
我想在sdcard而不是默认路径中创建我的sqlite数据库...我想从sdcard访问我的所有数据我也使用此代码:
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "
+ TABLE_NAME
+ " (id INTEGER PRIMARY KEY, name TEXT, number TEXT, skypeId TEXT, address TEXT, image BLOB)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
当我在默认路径中看到数据库文件时,我可以看到所有数据和表,但是当我看到在SD卡中创建的数据库文件时,它不会显示任何数据,但它只显示数据库文件
在构造函数中,它只在sdcard中创建文件,但在默认路径中它可以很好地完成所有工作.....如何在SD卡上存储所有Sqlitedata以便进一步访问?
我是Android的新手,我正在使用SQLite进行查询.我的问题是,当我在字符串中使用重音时,例如
如果我做:
SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%a%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)
回归:
但如果我这样做:
SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%à%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)
回归:
我想在SQLite数据库中选择字符串而不关心重音和大小写.请帮忙.
我正在尝试sqlalchemy,我正在使用此连接字符串连接到我的数据库
engine = create_engine('sqlite:///C:\\sqlitedbs\\database.db')
Run Code Online (Sandbox Code Playgroud)
sqlalchemy是否为您创建一个sqlite数据库,如果它本身不存在于应该获取数据库文件的目录中?
最近我学习使用node和node-sqlite3来操作sqlite3,这里有一个示例.
var sqlite3 = require('sqlite3');
var db = new sqlite3.Database(':memory:');
db.serialize(function() {
db.run("CREATE TABLE test(info TEXT)");
db.run("INSERT INTO test (info) VALUES ('info1')");
})
db.close();
Run Code Online (Sandbox Code Playgroud)
文档说db.serialized用来确保SQL行按顺序执行,但我很困惑,为什么不按顺序执行它们db.serialize,毕竟它们会从事件队列中拉出并按顺序执行?它在这里如何运作?
如果只有一个sql要执行,运行它是否安全,db.serialize如下所示?
var sqlite3 = require('sqlite3');
var db = new sqlite3.Database(':memory:');
db.run("CREATE TABLE test(info TEXT)");
db.close();
Run Code Online (Sandbox Code Playgroud) sqlite ×10
android ×4
python ×2
sql ×2
blob ×1
checksum ×1
database ×1
diacritics ×1
encryption ×1
ios ×1
iphone ×1
memory ×1
mysql ×1
node-sqlite3 ×1
node.js ×1
sqlalchemy ×1