标签: sqlite

在iPhone OS中加密SQLite数据库文件

iPhone上的任何SQLite数据库都只是与应用程序捆绑在一起的文件.任何人都可以相对简单地提取此文件并进行查询.

您对加密数据库中存储的文件或数据有何建议?

编辑:该应用程序是一个将与其他用户玩的游戏.有关用户相对优势和劣势的信息将存储在DB中.我不希望用户能够在手机上破坏他们的声誉/权力等,然后赢得比赛/联赛等(注意:试图模糊,因为这个想法是在NDA下).

我不需要军事加密,我只是不想用纯文本存储东西.

编辑2:稍微澄清一下,我的主要目标是

  1. 破解敏感数据是非常重要的
  2. 有一个简单的方法来发现数据是否已被更改(某种校验和)

sqlite iphone encryption checksum ios

20
推荐指数
4
解决办法
2万
查看次数

SQLite用于大型数据集?

我有一个相当大的数据集,并希望将其存储在一个文件而不是RDBMS中.

数据集中的主表只有超过1M行,30列和大约600Mb的CSV格式.

我在考虑SQLite.SQLite值得调查这个大小的数据集吗?

sqlite

20
推荐指数
5
解决办法
1万
查看次数

如何在Python中使用SQLite 3的vacuum命令

我在网上找不到关于如何在数据库上执行SQLite 3 vacuum命令的任何示例.

python sqlite

20
推荐指数
3
解决办法
1万
查看次数

为什么mysql和sqlite之间的SELECT结果不同?

我以简化和扩展的方式重新提出这个问题.

考虑这些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)

mysql sql sqlite

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

资产文件夹中的数据库文件.它会被更新吗?

我是Android SQLite的新手.这就是我所拥有的:

  • db.sqlite在我的assets文件夹中.
  • db的意图是READ ONLY.用户不会写入它.
  • 当应用程序更新时,db.sqlite将替换为新的数据库(我将从项目中删除旧文件并添加新文件).

我关心的是:

  • 旧的db文件会被删除吗?(这就是我想要的;用新的替换旧的)
    • 为什么这么问?因为当我调试我的应用程序时,每次更新db文件时,我都需要从设备上卸载应用程序以强制进行更新.当用户从Play商店更新我的应用程序时,用户是否需要这样做?我很害怕.
  • 这会受到我实现onCreate(SQLiteDatabase)onUpgrade(SQLiteDatabase,int,int)的影响吗?
    • 如果是,那么实施它们以满足我的要求的正确方法是什么?

这是我扩展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)

sqlite android android-assets sqliteopenhelper

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

Android:光标窗口已满

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字节.

memory sqlite android blob

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

如何在sdcard上直接存储sqlite数据库

我想在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以便进一步访问?

sqlite android android-sqlite

20
推荐指数
1
解决办法
3万
查看次数

如何在SQLite查询中忽略重音(Android)

我是Android的新手,我正在使用SQLite进行查询.我的问题是,当我在字符串中使用重音时,例如

  • AAA
  • AAA
  • AAA
  • AAA
  • AAA
  • AAA

如果我做:

SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%a%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)

回归:

  • AAA
  • aaa(它忽略了其他人)

但如果我这样做:

SELECT * FROM TB_MOVIE WHERE MOVIE_NAME LIKE '%à%' ORDER BY MOVIE_NAME;
Run Code Online (Sandbox Code Playgroud)

回归:

  • ààà(忽略标题"ÀÀÀ")

我想在SQLite数据库中选择字符串而不关心重音和大小写.请帮忙.

sqlite android diacritics

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

sqlalchemy,如果它不存在,则创建一个sqlite数据库

我正在尝试sqlalchemy,我正在使用此连接字符串连接到我的数据库

engine = create_engine('sqlite:///C:\\sqlitedbs\\database.db')
Run Code Online (Sandbox Code Playgroud)

sqlalchemy是否为您创建一个sqlite数据库,如果它本身不存在于应该获取数据库文件的目录中?

python sql sqlite sqlalchemy

20
推荐指数
4
解决办法
3万
查看次数

`db.serialize`如何在`node-sqlite3`中工作

最近我学习使用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)

database sqlite node.js node-sqlite3

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