我使用SQLite v3编写Perl脚本.sqlite版本是3.3.6.
当我在命令行上运行sqlite时,它可以工作.但是当我在Perl中做同样的事情时,它会引发这个错误
DBD :: SQLite :: db失败:接近"NOT":文件行2675处dbdimp.c第268行的语法错误(1).
这就是我在控制台上所做的事情:
$ sqlite3 test.db
SQLite version 3.3.6
sqlite> create table if not exists DATA_STATUS_VALUE (TYPE TEXT PRIMARY KEY, Seq INTEGER);
sqlite> .tables AllJobs LOCKSTAT_VALUE test_run12_data
DATA_STATUS_VALUE STATUS_VALUE test_run12_lock
Run Code Online (Sandbox Code Playgroud)
我正在使用的SQLite版本支持IF NOT EXISTS,为什么我会收到错误?
这是我的Perl代码:
#!/usr/bin/perl
use DBI;
my $driver = "SQLite";
$database = "test.db";
$dsn = "DBI:$driver:dbname=$database";
$dbh = DBI->connect( $dsn, undef, undef, { RaiseError => 1 } );
$dbh->do("CREATE TABLE IF NOT EXISTS DATA_STATUS_VALUE (TYPE TEXT PRIMARY KEY, Seq INTEGER);");
Run Code Online (Sandbox Code Playgroud) 我有以下代码,我试图抓住所有匹配id的行.
public ChartData getCompliedChartCounts(int id) {
SQLiteDatabase db = this.getReadableDatabase();
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
Cursor cursor = db.query(TABLE_COMPLIANCE_CHART_COUNTS, new String[]{KEY_ID,
KEY_FILTER_ID, KEY_YEAR, KEY_COUNTRY_ID, KEY_DOMAIN_ID, KEY_COMPLIED_COUNT, KEY_NOT_COMPLIED_COUNT, KEY_DELAYED_COUNT, KEY_INPROGRESS_COUNT}, KEY_COUNTRY_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
ChartData country = new ChartData(cursor.getInt(0), cursor.getInt(1), cursor.getInt(2), cursor.getInt(3), cursor.getInt(4), cursor.getInt(5), cursor.getInt(6), cursor.getInt(7), cursor.getInt(8));
// return contact
return country;
}
Run Code Online (Sandbox Code Playgroud)
当我像getCompliedChartCounts(3)一样调用它时,我希望它抓取包含id 3的所有行.
但问题是,它只捕获与id 3匹配的第一行,而其余行未被获取.我该如何解决这个问题?
我引用了以下几页,但我的问题仍未解决,
Android sqlite更新表总是返回0 ,Android中的SQLite如何更新特定行 ,Android SQLite更新行无效,android SQLite中的Update Function无法正常工作且SQLiteDatabase更新无法正常工作?
我有一个sqlite数据库作为QUESTIONS(ID,QUES,ANS),ID是主键.当我尝试使用以下代码更新值时,数据库中不会发生任何更改.
SQLiteDatabase db = null;
ContentValues values = new ContentValues();
values.put("QUES","New title");
values.put("ANS","Answer" );
long k= db.update("QUESTIONS",values,"ID=2",null);
Log.d("Success",""+k);
Run Code Online (Sandbox Code Playgroud)
k的值为1,数据库没有变化.我也尝试过
long k= db.update("QUESTIONS",values,null,null);
Run Code Online (Sandbox Code Playgroud)
但没用.
我一直在尝试在应用程序中创建一个模块。这个模块就像创建一个新的用户配置文件。当用户点击工具栏上的图标时,将显示具有表单的对话框。
表格有5个主要输入
当我单击对话框的完成按钮时,它应将信息保存在SQLite数据库中,并同时在手机中创建用户卡。用户可以在应用程序中创建N个配置文件,并且该用户必须填写信息并点击完成按钮,但是只要用户点击完成按钮,它就会使整个应用程序崩溃。我到目前为止已经走了这么多,遇到了一个问题-
add_form.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/form_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#3498DB"
android:textColor="#FFF"
android:textSize="21sp"
android:padding="16dp"
android:text="ADD PERSON"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:layout_below="@+id/form_title">
<EditText
android:id="@+id/person_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:textSize="14sp"
android:hint="PERSON NAME"
android:inputType="text" />
<RadioGroup
android:id="@+id/gender_selection"
android:layout_below="@+id/person_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MALE"
android:onClick="RadioButtonClicked"
/>
<RadioButton
android:id="@+id/female"
android:layout_marginLeft="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="FEMALE"
android:onClick="RadioButtonClicked"/>
</RadioGroup>
<LinearLayout
android:id="@+id/person_metrics"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_below="@+id/gender_selection">
<LinearLayout
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 我创建了一个有30列的表.
CREATE TABLE "SETTINGS" (
"column1" INTEGER PRIMARY KEY,
...
...
"column30"
)
Run Code Online (Sandbox Code Playgroud)
但是,我可以对它们进行分组并创建不同的表,在这些表中,它们可以具有主表的外键.哪种方式最好?或者列的数量很小,所以我会遵循哪种方式?
有谁知道如何删除greenDao中表的所有内容.我不想删除实际的表,只是删除相当于sql truncate语句的内容.
问候
我只是从我的SQLite数据库中获取数据,它说当编译从联系人编号中选择smss组时,'from'附近的语法错误.这是我的代码:
public ArrayList<Sms> fetchScreenedSms() {
ArrayList<Sms> smsInbox = new ArrayList<Sms>();
String query_fetchSMS = "select from smss" + " group by contactnumber " + "\"" ;
DBtableforNotSpam smsD = new DBtableforNotSpam(this);
SQLiteDatabase dbw = smsD.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)
我也试过这个,但它仍然说同样的话:
String query_fetchSMS = "select from " + "smss" + " group by contactnumber " + "\"" ;
Run Code Online (Sandbox Code Playgroud)
请指导我这里的问题
我有一些JSON数据,我转换为字符串使用:
myString = str(myJSON)
Run Code Online (Sandbox Code Playgroud)
我保存到SQLite数据库中.现在,当我检索myString看起来或多或少像这样:
'{u\'foo\': False, u\'bar\': 20, u\'name\': u\'Anna\'}'
Run Code Online (Sandbox Code Playgroud)
我无法让它回到JSON.我认为主要问题是这些额外的u\,\并且出现了.
我尝试过使用json.dumps和/或json.loads没有运气.有什么建议?谢谢!
我有一个使用SQLite的android Activity,在Activity中,用户可以进行更改,这些更改会影响存储在DB中的数据.
我想知道什么是更好的:在创建数据库时写入更改,或者将所有这些更改保存在一个List中,并在OnStop方法(在活动结束时)的DB中写入所有内容.
我理解这个问题之前已被多次询问,但在这种情况下它是不同的,因为错误只发生在尝试将图像保存到数据库而其他问题没有处理图像时.如果有,请用链接评论.
首先,我只发布我认为必要的代码,所以如果我错过了一些代码或其他什么,请告诉我.我有一个笔记记录应用程序,它存储2个不同的EditText字段作为笔记标题和笔记正文.这很好.我尝试添加从SQLite数据库添加,存储和检索图像的功能.这是我的EditNoteActivity类中的代码,在用户完成编辑注释并按下后退按钮转到MainActivity类之后,在"存储"操作期间运行.
private void updateNote(String noteText, String titleText) {
Log.d("Img", "updateNote");
ContentValues values = new ContentValues();
ImageView img = (ImageView) findViewById(R.id.imageView);
byte[] data;
if (img.getDrawable() != null) {
Log.d("Img", "updateNote ----- image here");
Bitmap bitmap = ((BitmapDrawable)img.getDrawable()).getBitmap();
// data = getBitmapAsByteArray(bitmap);
data = DbBitmapUtility.getBytes(bitmap);
} else {
Log.d("Img", "updateNote ----- image not here");
data = null;
}
values.put(DBOpenHelper.NOTE_IMAGE, data);
values.put(DBOpenHelper.NOTE_BODY, noteText);
values.put(DBOpenHelper.NOTE_TITLE, titleText);
// reusing noteFilter value to make sure you're only updating 1 selected row
getContentResolver().update(NoteProvider.CONTENT_URI, values, noteFilter, null); …Run Code Online (Sandbox Code Playgroud)