当我在iPhone模拟器中运行此代码时,我无法从DB中删除记录.如果我在SQLite DB Browser中运行此查询,则效果很好.这是我的代码
SQLiteDB *sqliteConnect=[[SQLiteDB alloc] init];
sqlite3 *database;
if(sqlite3_open([sqliteConnect.databasePath UTF8String], &database)==SQLITE_OK)
{
sqlite3_stmt *compiledstatement;
const char *sqlstmt="delete from searchHistory where id = (select min(id) from searchHistory) ";
if(sqlite3_prepare_v2(database, sqlstmt, -1, &compiledstatement, NULL)==SQLITE_OK)
{
sqlite3_step(compiledstatement);
if(SQLITE_DONE != sqlite3_step(compiledstatement))
NSAssert1(0,@"Error while creating delete statement => %s",sqlite3_errmsg(database) );
}
NSLog(@"delete DONE");
sqlite3_finalize(compiledstatement);
}
sqlite3_close(database);
Run Code Online (Sandbox Code Playgroud)
当我使用调试器运行时,我得到以下错误=>
2011-04-08 08:42:34.049 MyApp[1838:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error while creating delete statement => not an error'
Run Code Online (Sandbox Code Playgroud)
SQLiteDB是我的类,它包含init和checkAndCopyDB方法的逻辑.我的数据库被复制到文档目录中.其他DB操作工作正常.请帮我.谢谢
我不想要复合主键.我想要的是另一个领域也必须是独一无二的.
嘿,我正在构建一个包含数据库的Android应用程序.我的问题是如何知道应用程序是否已更新?我的意思是,我知道当DATABASE_VERSION来自 - 时调用onUpgrade方法 -
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
Run Code Online (Sandbox Code Playgroud)
低于应用程序的版本,但如何在更新后增加它,因此应用程序不会一直更新自己?
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:C:\\users\\tim\\airline\\flightschedule.db");
PreparedStatement statement = connection.prepareStatement("INSERT INTO flights (flightID,departure,arrival)VALUES(?,?,?)");
statement.setInt(1,5);
statement.setString(2,"David");
statement.setString(3,"Ortiz");
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个android形式的orderid字段..现在我想添加一个数字以及orderid的内容,这样每次数字应该是增量方式..
例如,如果用户输入123在orderid然后我想在数据库中存储123100类似于下次运行我想在数据库中存储123101 ..等等...我将如何做到这一点
请帮助
我不知道为什么以下的代码总是在虚假的情况下反驳.我比较的结果是用户在字符串变量'classNameGlobal'中输入的文本和来自DB查询的第二个结果,从而导致表的列中的字符串值.每当我运行控制开关到else条件不运行if部分-.-
请看一看.
String result[];
result = new String[cursor.getCount() - 1];
int i = 0;
while (cursor.moveToNext()) {
result[i] = cursor.getString(cursor.getColumnIndex("name"));
i++;
}
classNameGlobal = className.getText().toString().toUpperCase().trim();
Run Code Online (Sandbox Code Playgroud)
注意:如果上述代码是用onclick方法编写的,除了结果数组声明之外的所有代码.另外,我使用相同的方法将字符串存储在数据库中,即我将其转换为大写字母然后删除任何额外的空白区域!即使我从用户输入的字符串查询和解压缩结果.两者都是相同的.现在为什么我总是让这个其他部分运行而不是if部分-.-我用来比较数据库查询和用户输入字符串的结果的方法是:
for (int b = 0; b < result.length; b++) {
if (classNameGlobal == result[b]) {
Log.d(TAG, "Inside if condition now : " + result[b] + " \t" + classNameGlobal);
db.execSQL("drop table if exists " + classNameGlobal);
/* Deleting Code File */
this.deleteFile(classNameGlobal + ".txt");
Toast.makeText(
this,
classNameGlobal + " Database Dropped Successfully ",
Toast.LENGTH_SHORT).show(); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个需要在Actionbar中使用SearchView的Honeycomb应用程序,但我对实现它需要做什么感到困惑.
我不认为这些文档涵盖了Honeycomb的所有内容,看起来它只是针对Android的移动版本.
我一直在看这个页面:http://developer.android.com/guide/topics/search/adding-custom-suggestions.html
我的数据来自SQLite数据库,我已经有了搜索的数据库查询,所以这不是问题.
有帮助吗?
编辑: 嗯,看看我到这里的反馈,我可以看到我显然没有正确解释自己......但是不能做得更好.
我试图从我的PHP脚本启用sqlite数据库的外键约束.
我试过了 :
shell_exec('sqlite ex.db');
shell_exec('PRAGMA foreign_keys = ON');
echo $isEnabled = shell_exec('PRAGMA foreign_keys');
Run Code Online (Sandbox Code Playgroud)
但我没有得到$isEnabled的1.事实上,我没有得到任何输出.
谢谢.