我从Scraperwiki导出了一个SQLite数据库(作为sqlite格式3文件?),带有.sqlite文件扩展名/文件后缀.
如何将其导入R,可能将原始数据库表映射到单独的数据框?
在Android中,android.database.sqlite.SQLiteStatement允许我在SQLite中使用预准备语句来避免注入攻击.它的execute方法适用于创建/更新/删除操作,但似乎没有任何返回游标等的查询方法.
现在在iOS中我可以创建类型的预准备语句sqlite3_stmt*并将它们用于查询,所以我知道这不是SQLite的限制.如何在Android中使用预准备语句执行查询?
我目前正在尝试创建一个sqlite数据库,我可以从另一个sqlite数据库导入一个表(无法附加)并向每个列添加一些额外的数据.
因为没有INSERT OR UPDATE我提出这个:
我正在考虑将数据分成两个表并在之后加入它们所以我可以将整个导入转储到一个表中,替换所有更改并分别管理额外数据,因为这不会改变在进口.
第一个表(让我们称之为base_data)看起来像
local_id | remote_id | base_data1 | base_data2 | ...
---------+-----------+------------+------------+----
Run Code Online (Sandbox Code Playgroud)
除了local_id一切都只是远程数据库的镜像(我可能会添加一个同步时间戳,但现在无关紧要).
第二个表看起来很相似,但remote_id设置为外键
remote_id | extra_data1 | extra_data2 | ...
----------+-------------+-------------+----
CREATE TABLE extra_data (
remote_id INTEGER
REFERENCES base_data(remote_id)
ON DELETE CASCADE ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED,
extra_data1 TEXT,
extra_data2 TEXT,
/* etc */
)
Run Code Online (Sandbox Code Playgroud)
现在我的想法只是简单的INSERT OR REPLACE INTO base_data ...值,因为我导入的数据库没有同步时间戳或任何东西,我将不得不比较一切,以找出我有什么行UPDATE/什么INSERT.
但这里存在的问题INSERT OR REPLACE是:实际上是一个DELETE后跟a INSERT和删除部分触发外键 …
我在LogCat中得到这个:
05-20 17:16:34.721: E/AndroidRuntime(30461): FATAL EXCEPTION: main
05-20 17:16:34.721: E/AndroidRuntime(30461): java.lang.NullPointerException
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.database.sqlite.SQLiteStatement.releaseAndUnlock(SQLiteStatement.java:290)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:96)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1810)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1761)
05-20 17:16:34.721: E/AndroidRuntime(30461): at com.kickinglettuce.debtplannerpro.DebtDataSource.updateDebt(DebtDataSource.java:130)
05-20 17:16:34.721: E/AndroidRuntime(30461): at com.kickinglettuce.debtplannerpro.manageDebts$4.onClick(manageDebts.java:184)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.view.View.performClick(View.java:3511)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.view.View$PerformClick.run(View.java:14105)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.os.Handler.handleCallback(Handler.java:605)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.os.Handler.dispatchMessage(Handler.java:92)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.os.Looper.loop(Looper.java:137)
05-20 17:16:34.721: E/AndroidRuntime(30461): at android.app.ActivityThread.main(ActivityThread.java:4447)
05-20 17:16:34.721: E/AndroidRuntime(30461): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 17:16:34.721: E/AndroidRuntime(30461): …Run Code Online (Sandbox Code Playgroud) 有谁知道如何SQLiteDatabase.CursorFactory在Android 上使用?我希望获得一个持久的SQLiteCursor对象,该对象使用SQL SELECT语句,其中几个WHERE子句表达式使用可以在重新查询之前以编程方式更改的参数.
例如:
SELECT LocationID FROM Locations WHERE Latitude < northlimit AND Latitude > southlimit AND Longitude < eastlimit AND Longitude > westlimit;
Run Code Online (Sandbox Code Playgroud)
限制参数将每200ms动态变化一次
我试图解决一个问题,如果我只是使用SQLiteDatabase.rawQuery("SELECT ...");系统为每个新查询创建一个新的CursorWindow,最终耗尽内存.所以我试图找到一种方法来强制系统不要创建新的CursorWindows.
我正在玩Sqlite并在尝试回读一些测试数据时不断收到错误.例如,我创建了一个带有单个表和一些列的简单数据库,并使用一些测试数据填充它,如下所示.
sqlite> .schema
CREATE TABLE "shows"(id integer primary key asc autoincrement, showName TEXT, guest TEXT, dateAired date, dateWatched date);
sqlite> select * from shows;
6|test show|test guest 1|2012.05.01|2012.07.10
7|test show|test guest 2|2012.05.02|2012.07.10
8|test show|test guest 4|2012.05.04|2012.07.10
Run Code Online (Sandbox Code Playgroud)
我正在使用此处提供的System.Data.Sqlite库,但在尝试读取日期列时它一直给我一个错误.我尝试将日期设置为dd-MM-yyyy格式,但仍然会收到错误消息"字符串未被识别为有效日期时间".我已经尝试使用DateTime.Parse或将其转换为datetime或只是ToString()来查看发生了什么,但我一直得到同样的错误.我可以很好地阅读文本字段,但无法读取日期字段.
我的C#代码剪断如下
var sqliteConn = new SQLiteConnection("Data Source=data/shows.db;Version=3;New=False;Compress=True");
sqliteConn.Open();
SQLiteCommand cmd = new SQLiteCommand(sqliteConn);
cmd.CommandText = "select * from shows";
SQLiteDataReader reader = cmd.ExecuteReader( );
while (reader.Read( ))
{
var showName = reader["showName"];
// This is where it keeps giving me an …Run Code Online (Sandbox Code Playgroud) 我需要在我的Debian VPS服务器上安装SQLite.有人可以帮我吗?请给我一些步骤因为我是新手,不知道.
谢谢
将某个字符串插入数据库时,我遇到了非常令人沮丧的错误.它说:
Python无法解码字节字符,期待unicode"
经过大量的搜索,我看到我可以通过将我的字符串编码为Unicode来克服这个错误.我尝试首先解码字符串,然后以UTF-8格式对其进行编码.喜欢:
string = string.encode("utf8")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'ascii' codec can't decode byte 0xe3 in position 6: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我一直在为这个错误而死!我如何解决它?
我正在学习Android.我有一个问题,我无法解决它.我想从现有数据库中检索数据并TextView在单击后按钮中显示它.
我的代码DataBaseHelper看起来像这样:
public class DataBaseHelper extends SQLiteOpenHelper {
//The Android's default system path of your application database.
private static String DB_PATH = "/data/data/in.ekonomia.android/databases/";
private static String DB_NAME = "cytaty";
private SQLiteDatabase myDataBase;
private final Context myContext;
/** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */
public DataBaseHelper(Context context)
{
super(context, DB_NAME, null, 1);
this.myContext = context;
}
/** …Run Code Online (Sandbox Code Playgroud) 我是一个新手Android程序员,我最近跟着一个教程,该教程展示了如何创建一个本地SQLite数据库,然后使用SQLiteDatabase.rawQuery来返回一个Cursor来访问数据库.我想修改我的应用程序以使用CursorLoader,这显然是访问数据库的更好方法.我的问题是CursorLoader构造函数需要给出一个URI.我只输入"file:/// [db to path]"?似乎有点凌乱.