我在我的应用程序中使用sqlite数据库
以下是我的代码,它正在获取数据
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSString *str1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
[dataArray addObject:str1];
}
Run Code Online (Sandbox Code Playgroud)
如果数据库中存在null,则此程序崩溃.
实际上我有多列,我只将数据保存到一行的一列,所以其他列保持为空,这就产生了问题......
任何人都可以告诉我如何检查当前值是否为null
我试图检查str1是否为空?
但是编程崩溃....
谢谢,请帮忙
我的问题出现在设备中,但不出现在模拟器中.
nDBres=sqlite3_prepare_v2(databaseConn, sqlStatement, -1, &compiledStatement,NULL)
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试运行的插入查询.在模拟器中它返回0,而在设备中它返回8.此后每当我尝试运行任何其他写操作时,应用程序崩溃.
我为此疯狂.
我是SQLiteManager的作者我想为android编写相同的应用程序.在您看来,我应该使用哪种语言?谢谢
我是iphone中使用sqlite的新手,
我有一个用.sql扩展名保存的sqlite文件,现在我需要通过控制台打开它以检查其中包含的表格和相应的数据以进一步推进我的工作,请任何人告诉我这样做..
提前致谢.
我试图删除一行,其主键(列名=版本)例如是4.002000000000001.所以我说声明:
DELETE FROM tbl WHERE version=4.002;
Run Code Online (Sandbox Code Playgroud)
现在,这不会工作,因为没有版本等于4.002的行,只有版本等于4.002000000000001的行. 请不要问为什么我不将版本存储为DB中的4.002,因为我试图通过使列类型为DECIMAL(5,3)来实现,但它仍然存储来自Java的双精度为4.002000000000001.请不要问为什么我不说"...... WHERE version = 4.002000000000001;" 因为当我使用JDBC创建语句时,我无法控制java格式如何加倍(甚至使用DecimalFormat类).
那么有没有办法在SQLite3中向下舍入(floor函数)?那么我可以说"删除其FLOOR(版本)等于4.002的行?
我是一名C++程序员(使用Java查询SQL数据库,请不要问为什么:P)谁不熟悉复杂的SQL查询,所以这对我想做的事情是正确的:
DELETE FROM tbl WHERE ROUND(version, 0.5)=4.002;
Run Code Online (Sandbox Code Playgroud) 我正在尝试为Android中的应用创建登录屏幕.我已将有关用户的信息存储在数据库的"用户"表中.我正在尝试使用光标对象将登录屏幕中输入的用户名和密码与数据库中的值进行匹配,但它不起作用,导致应用程序崩溃.有人可以推荐或修改方法,如果可能的话,可以使用一些代码片段.非常感谢大家,谢谢.
下面是LoginForm类的代码.(它使用DBAdapter类连接到数据库)
package com.androidbook.LoginForm;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Toast;
public class LoginForm extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final DBAdapter db = new DBAdapter(getBaseContext());
final AutoCompleteTextView username = (AutoCompleteTextView)this.findViewById(R.id.AutoComUsernameLogin);
final AutoCompleteTextView password = (AutoCompleteTextView)this.findViewById(R.id.AutoComPasswordLogin);
Button Register = (Button) findViewById(R.id.ClicktoRegister);
Register.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), RegistrationForm.class);
startActivityForResult(myIntent, 0); …Run Code Online (Sandbox Code Playgroud) 我有一个SQLite请求要做,我不知道该怎么做.
这里是 :
SELECT videoid,inappid FROM store,video
WHERE store.paid='1' AND store.checked='1'
AND video.inappid=store.inappid AND video.download =='0'
ORDER BY video.inappid DESC,video.videoid;
Run Code Online (Sandbox Code Playgroud)
- > SQL错误答案:DB错误:1"模糊列名:inappid"
我解释一下:商店和视频是2个表.在商店中,有'inappid'引用的产品(com.mysite.myapp.000).'inappid'列名是表中的键,是唯一的.付费和检查只是商店表中的布尔值.
在视频中,有...视频,每个视频都有一个唯一的键'videoid'.一个'inappid'列,引用商店表中的inappid.
所以我的要求是:在商店表中选择我所有的inappid params元素,其中付费和已检查为TRUE,并在视频表中选择此视频的所有视频视频,此视频尚未下载.
我知道我必须使用JOIN和ON元素,但我不知道如何
请帮忙哦.
我需要在SQLite中打印日期,如"24-03-2011 10:45:00",现在我只能打印日期.
>>> import sqlite3
>>> database = sqlite3.connect('basedadosteste.db')
>>> cursor = database.cursor()
>>> cursor.execute("SELECT date('now');")
<sqlite3.Cursor object at 0x00BC0710>
>>> results = cursor.fetchall()
>>> for entry in results:
... print entry
...
(u'2011-03-25',)
>>>
Run Code Online (Sandbox Code Playgroud)
有人能给我一个如何做到这一点的线索吗?
最好的祝福,
我知道在sqlite中创建数据库的命令.即sqlite3 databasename.sqlite.但任何人都可以告诉我在终端中打开现有数据库的命令是什么.请有人帮助我
我想存储一个字符串列表,然后检索它们.我如何使用数据库执行此操作?