我创建了一个由自定义对象组成的arraylist.基本上用户将创建一个类,每次创建一个类时,都会在arraylist中添加一个新的Lecture(我的自定义对象).我需要保存生成的arraylist,以便即使重新启动应用程序也会保存用户的类.
根据我的理解,我必须使我的课程可序列化.但我究竟是怎么做到的呢?然后一旦它序列化我该怎么办?
public class Lecture{
public String title;
public String startTime;
public String endTime;
public String day;
public boolean classEnabled;
public Lecture(String title, String startTime, String endTime, String day, boolean enable){
this.title = title;
this.startTime = startTime;
this.endTime = endTime;
this.day = day;
this.classEnabled = enable;
}
//Getters and setters below
Run Code Online (Sandbox Code Playgroud) 我总是只使用"SELECT COUNT(1)FROM X",但也许这不是最有效的.有什么想法吗?其他选项包括SELECT COUNT(*)或者如果它是自动递增(并且从不删除),则可能获取最后插入的id.
如果我只是想知道桌子上是否有任何东西怎么样?(例如,计数> 0?)
我想在sqlite3中创建没有列的表.它可以在postgres数据库中,但不能在sqlite3中.有没有办法实现这一点,或者它根本不支持(也许不是在sql标准?)我检查了sqlite3 CREATE TABLE语法,似乎,必须至少有一列,但也许我错过了什么?
在sqlite触发器中是否支持条件if/case/when语句?
我们说我有以下设置:
CREATE TABLE someTable (id INTEGER PRIMARY KEY, someValue INTEGER);
CREATE TRIGGER update_another_table AFTER INSERT ON someTable
BEGIN
IF(new.someValue==0)
DELETE FROM another_table WHERE (...some condition);
ELSE
IF NOT EXISTS(SELECT anotherValue FROM another_table WHERE anotherValue =new.someValue)
INSERT INTO another_table VALUES(new.someValue, ...);
ELSE
UPDATE another_table SET anotherValue = new.someValue;
END;
Run Code Online (Sandbox Code Playgroud)
但它会引发语法错误 Sqlite error near 'IF': syntax error"
我正在努力了解我的iphone应用程序中的问题.
我在我的sqlite数据库中有一个set方法,看起来它工作正常.我在设置值时执行NSLog并且它是正确的.这是一个值为"2010-10-10 12:13:14"的字符串.
当我对相同数据使用get方法时,结果表明该值不正确.它返回1.
有没有办法打开iPhone模拟器内部的数据库文件,这样我就可以看到模拟器数据库中存储的实际数据是什么?
有没有办法嗅探我的模拟器和实际文件之间的sqlite调用?像Charles或Service Capture这样的东西?
非常感谢!
我将我的PDF从SQLite DB转换为NSData变量.现在我有什么选择从这个NSData创建CGPDFDocumentRef?
或者我有什么选择来创建这个CGPDFDocumentRef,在SQLite中有数据吗?
我需要在app.config中设置sqlite连接字符串.我想设置相对于调试/发布文件夹的路径,数据库文件将被复制到这些文件夹.
<add name="EmailsSQLite" connectionString="data source=c:\Users\Test\Documents\Visual Studio 2008\Projects\TestConsole\Emails\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
Run Code Online (Sandbox Code Playgroud)
那可能吗?
在最近的两周内,在没有发布我的应用程序更新的情况下,我开始收到一堆包含损坏数据库的报告.下面是堆栈跟踪.Android无法打开数据库,我的计算机上的sqlite-manager程序也无法打开.但是,fireite的SQLite manager-addon可以打开它.运行命令"compact database"后,数据库已修复,我可以在android中打开它.有什么方法可以在我的应用程序中做这样的事情吗?最大的问题是我甚至无法尝试打开数据库,因为较新版本的Android会立即删除并替换数据库,如下面的堆栈跟踪中所示.可以在不打开数据库的情况下以某种方式执行PRAGMA语句吗?
问候,
02-22 09:55:20.245: ERROR/Database(5382): CREATE TABLE android_metadata failed
02-22 09:55:20.245: ERROR/Database(5382): Failed to setLocale() when constructing, closing the database
02-22 09:55:20.245: ERROR/Database(5382): android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
02-22 09:55:20.245: ERROR/Database(5382): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
02-22 09:55:20.245: ERROR/Database(5382): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
02-22 09:55:20.245: ERROR/Database(5382): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
02-22 09:55:20.245: ERROR/Database(5382): Deleting and re-creating corrupt database …Run Code Online (Sandbox Code Playgroud) 我试图使用executemany将值插入数据库,但它对我不起作用.这是一个示例:
clist = []
clist.append("abc")
clist.append("def")
clist.append("ghi")
cursor.executemany("INSERT INTO myTable(data) values (?) ", clist)
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied.
但是,当我更改列表时,它工作正常:
clist = ["a", "b"]
cursor.executemany("INSERT INTO myTable(data) values (?) ", clist)
Run Code Online (Sandbox Code Playgroud)
它按预期工作!我可以在数据库中看到数据.为什么第一个列表不起作用而第二个列表不起作用?
(PS:这只是一个示例,而不是实际代码.为简单起见,我做了一个小测试用例).
我正在开发Android应用程序.我必须在我的活动中开发一个xml按钮,并构建我的sqlite数据库和表.如何让用户按下按钮删除表格?谢谢.
sqlite ×10
android ×3
iphone ×2
.net ×1
app-config ×1
corruption ×1
create-table ×1
database ×1
if-statement ×1
insert ×1
java ×1
nsdata ×1
pdf ×1
pragma ×1
pysqlite ×1
python ×1
sql ×1
triggers ×1
xcode ×1