android.database.sqlite.SQLiteException:表联系人没有名为uid的列
这是我的代码:android.database.sqlite.SQLiteException:表联系人没有名为uid的列,android,sqlite,Android,Sqlite,这是我的代码: public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS" + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," // and auto increment will be handled with
public void onCreate(SQLiteDatabase db)
{
String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS"
+ TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," // and auto increment will be handled with primary key
+ KEY_UID + " TEXT,"
+ KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT,"
+ KEY_Comapny + " TEXT,"
+ KEY_email + " TEXT,"
+ KEY_country + " TEXT,"
+ KEY_street + " TEXT,"
+ KEY_city + " TEXT,"+ KEY_state + " TEXT,"
+ KEY_zip + " TEXT);";
db.execSQL(CREATE_CONTACTS_TABLE);
}
我得到以下例外:
: E/SQLiteDatabase(2645): android.database.sqlite.SQLiteException: table contacts has no column named uid (code 1): , while compiling: INSERT INTO contacts(uid,zip,phone_number,email,company_name,street,name,state,city,country) VALUES (?,?,?,?,?,?,?,?,?,?)
请帮忙。
谢谢您的
创建表中有语法错误
,因此显然它尚未运行。在EXISTS
和表名之间需要一个空格
由于当前SQL的onCreate()
尚未运行,因此您的数据库文件的版本较旧。卸载应用程序以将其删除,并使onCreate()
再次运行。有关详细信息,请参阅。替换此查询:
String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS"
+ TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," // and auto increment will be handled with primary key
+ KEY_UID + " TEXT,"
+ KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT,"
+ KEY_Comapny + " TEXT,"
+ KEY_email + " TEXT,"
+ KEY_country + " TEXT,"
+ KEY_street + " TEXT,"
+ KEY_city + " TEXT,"+ KEY_state + " TEXT,"
+ KEY_zip + " TEXT);";
db.execSQL(CREATE_CONTACTS_TABLE);
为此:
String CREATE_CONTACTS_TABLE = "CREATE TABLE IF NOT EXISTS "
+ TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," // and auto increment will be handled with primary key
+ KEY_UID + " TEXT,"
+ KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT,"
+ KEY_Comapny + " TEXT,"
+ KEY_email + " TEXT,"
+ KEY_country + " TEXT,"
+ KEY_street + " TEXT,"
+ KEY_city + " TEXT,"+ KEY_state + " TEXT,"
+ KEY_zip + " TEXT);";
db.execSQL(CREATE_CONTACTS_TABLE);
注意:创建表查询中存在语法错误,您需要在EXISTS和TABLE\u联系人之间留出一个空格。以下是解决方案:
我面临同样的问题,现在我解决了
我们想让你做一个数据库应用程序
您有两个java类
首先是参数
Params.java
,另一个是Contact.java
,我们在这里制作构造函数、getter和setter等
Param.java
下面的类代码:(请参见第5行和第6行中的错误)并修复该引用
package com.andro.background.crud_db.param;
public class Params {
public static final int DB_VERSION=1;
public static final String DB_NAME="contacts_db"; //(-_-)check this, My mistake was "contact_db" , i write wrong name so it shows error
public static final String TABLE_NAME="contacts_table"; // Right is "contact_table", this kinda error in your code
//key of our table in db
public static final String KEY_ID="id";
public static final String KEY_NAME="name";
public static final String KEY_PHONE="phone_number";
}
(在上面的代码中检查此错误)
如果您犯了同样的错误,那么您的错误将如下代码所示
2020-02-03 02:57:24.432 10705-10705/com.andro.background.cruddb E/SQLiteLog: (1) table contacts_table has no column named phone_number
2020-02-03 02:57:24.434 10705-10705/com.andro.background.cruddb E/SQLiteDatabase: Error inserting name=sunnykanumber phone_number=9090909090
android.database.sqlite.SQLiteException: table contacts_table has no column named phone_number (code 1): , while compiling: INSERT INTO contacts_table(name,phone_number) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1546)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1417)
at com.andro.background.cruddb.data.MyDbHandler.addContact(MyDbHandler.java:62)
at com.andro.background.cruddb.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
2020-02-03 02:57:24.432 10705-10705/com.andro.background.cruddb E/SQLiteLog:(1)表格联系人没有名为电话号码的列
2020-02-03 02:57:24.434 10705-10705/com.andro.background.cruddb E/SQLiteDatabase:插入name=sunnykanumber电话号码=9090时出错
android.database.sqlite.SQLiteException:table contacts_table没有名为phone_number(代码1)的列,编译时:INSERT-INTO contacts_table(name,phone_number)值(?,)
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)
位于android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
位于android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1546)
位于android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1417)
位于com.andro.background.cruddb.data.MyDbHandler.addContact(MyDbHandler.java:62)
位于com.andro.background.cruddb.MainActivity.onCreate(MainActivity.java:31)
位于android.app.Activity.performCreate(Activity.java:7009)
位于android.app.Activity.performCreate(Activity.java:7000)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Here KEY\u UID==UID????正当请显示insert方法。请显示您的字段定义和insert语句,好吗?实际上,安装新版本的应用程序很有效!!非常感谢您的快速回复