我只是在学习 sqlite 数据库并尝试了一个小应用程序来将条目添加到 sqlite 数据库中......不知道为什么它不起作用......我真的很沮丧,几乎让我对这个 android 的东西失去兴趣.......任何帮助表示赞赏......提前谢谢............
这是代码:
开瓶器类
package com.example.sqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class opener {
Context cc;
SQLiteDatabase db;
public opener(Context c)
{
cc=c;
}
class SQLHelper extends SQLiteOpenHelper{
public SQLHelper(Context context) {
super(context, "app" , null, 1);
// TODO Auto-generated constructor stub
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE default(name TEXT, abc TEXT, ac TEXT)");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS default");
onCreate(db);
}
}
public void open()
{
SQLHelper sq= new SQLHelper(cc);
db=sq.getWritableDatabase();
}
public void close()
{
db.close();
}
public long insert(String a,String b,String c)
{
ContentValues cv = new ContentValues();
cv.put("name", a);
cv.put("abc", b);
cv.put("ac", c);
return db.insert("default", null,cv);
}
}
这是主类:
MainActivity.java
package com.example.sqlite;
import android.os.Bundle;
import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText ed1;
EditText ed2;
EditText ed3;
EditText ed4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1 = (EditText) findViewById(R.id.editText1);
ed2 = (EditText) findViewById(R.id.editText2);
ed3 = (EditText) findViewById(R.id.editText3);
ed4 = (EditText) findViewById(R.id.editText4);
}
public void add(View v) {
String ac = ed1.getText().toString();
String b = ed2.getText().toString();
String c = ed3.getText().toString();
opener a = new opener(this);
a.open();
long d = a.insert(ac, b, c);
a.close();
if (d != -1) {
Dialog dia = new Dialog(this);
dia.setTitle("SUCCESS");
dia.setCanceledOnTouchOutside(true);
dia.show();
}
else {
Dialog dia = new Dialog(this);
dia.setTitle("NoSuccess");
dia.setCanceledOnTouchOutside(true);
dia.show();
}
}}
顺便说一句,如果它看起来很乱,很抱歉.....每当我尝试插入一些东西时,控制台都会说这样的话
07-04 12:45:57.951:I/Database(277):sqlite 返回:错误代码 = 1,msg = 接近“默认”:语法错误
07-04 12:45:57.951:E/Database(277):在准备“创建表默认值(名称文本,abc 文本,ac 文本)”时,0x32a270 上的失败 1(接近“默认”:语法错误)。
07-04 12:45:57.961: D/AndroidRuntime(277): 关闭 VM
07-04 12:45:57.961: W/dalvikvm(277): threadid=1: 线程以未捕获的异常退出 (group=0x4001d800)
07-04 12:45:58.011:E/AndroidRuntime(277):致命异常:主要
07-04 12:45:58.011: E/AndroidRuntime(277): java.lang.IllegalStateException: 无法执行活动的方法
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.view.View$1.onClick(View.java:2072)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.view.View.performClick(View.java:2408)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.view.View$PerformClick.run(View.java:8816)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.os.Handler.handleCallback(Handler.java:587)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.os.Handler.dispatchMessage(Handler.java:92)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.os.Looper.loop(Looper.java:123)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.app.ActivityThread.main(ActivityThread.java:4627)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 java.lang.reflect.Method.invokeNative(Native Method)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 java.lang.reflect.Method.invoke(Method.java:521)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-04 12:45:58.011: E/AndroidRuntime(277): at dalvik.system.NativeStart.main(Native Method)
07-04 12:45:58.011:E/AndroidRuntime(277):原因:java.lang.reflect.InvocationTargetException
07-04 12:45:58.011: E/AndroidRuntime(277): 在 com.example.sqlite.MainActivity.add(MainActivity.java:31)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 java.lang.reflect.Method.invokeNative(Native Method)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 java.lang.reflect.Method.invoke(Method.java:521)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.view.View$1.onClick(View.java:2067)
07-04 12:45:58.011: E/AndroidRuntime(277): ... 11 更多
07-04 12:45:58.011:E/AndroidRuntime(277):由:android.database.sqlite.SQLiteException:接近“默认”:语法错误:创建表默认(名称文本,abc 文本,ac 文本)
07-04 12:45:58.011:E/AndroidRuntime(277):在 android.database.sqlite.SQLiteDatabase.native_execSQL(本机方法)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
07-04 12:45:58.011: E/AndroidRuntime(277): at com.example.sqlite.opener$SQLHelper.onCreate(opener.java:29)
07-04 12:45:58.011: E/AndroidRuntime(277): 在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
07-04 12:45:58.011: E/AndroidRuntime(277): at com.example.sqlite.opener.open(opener.java:45)
提前致谢