在表中插入值时出错

时间:2013-08-12 19:15:15

标签: android sql database sqlite csv

我正在从csv文件中读取值,并且我能够准确地执行此操作。但是,当我尝试在系统db的表中写入这些值时,我得到一个错误,表示表中不存在一列。

Logcat错误:

E/SQLiteLog(318):      (1) table hospital has no column named zip

E/SQLiteDatabase(318): Error inserting zip=36301 avgCharges=20313 avgPayment=4895 _id=10001 address=1108 ROSS CLARK CIRCLE providerName=SOUTHEAST ALABAMA MEDICAL CENTER state=AL procedure=057 - DEGENERATIVE NERVOUS SYSTEM DISORDERS W/O MCC discharges=38 city=DOTHAN

E/SQLiteDatabase(318): android.database.sqlite.SQLiteException: table hospital has no column named zip (code 1): , while compiling: INSERT INTO hospital(zip,avgCharges,avgPayment,_id,address,providerName,state,procedure,discharges,city) VALUES (?,?,?,?,?,?,?,?,?,?)

E/SQLiteDatabase(318):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

创建表查询:(所有字段都在TEXT中进行测试)

query = "CREATE TABLE hospital(_id TEXT PRIMARY KEY, procedure TEXT, providerName TEXT,     address TEXT, city TEXT, state TEXT, zip TEXT, discharges TEXT, avgCharges TEXT, avgPayment TEXT)";

db.execSQL(query);

我确信没有列类型不匹配。它说它找不到名为ZIP的列。我不明白这里发生了什么。

查询以插入值:     values.put(“_ id”,hospital.get_id());

    values.put("procedure", hospital.get_procedure());
    values.put("providerName", hospital.get_providerName());
    values.put("address", hospital.get_address());
    values.put("city", hospital.get_city());
    values.put("state", hospital.get_state());
    values.put("zip", hospital.get_zip());
    values.put("discharges", hospital.get_discharges());
    values.put("avgCharges", hospital.get_avgCharges());
    values.put("avgPayment", hospital.get_avgPayment());

    db.insert(TABLE_NAME, null, values);

关于可以在这做什么的任何想法?提前谢谢!

2 个答案:

答案 0 :(得分:0)

您需要实现onUpgrade方法,以便在更改架构时删除和添加表。你可以看看http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#onUpgrade(android.database.sqlite.SQLiteDatabase,int,int)。

答案 1 :(得分:0)

在代码中添加新列之前,需要删除该表。 您应该清除应用数据。否则卸载该应用程序并从Studio中运行它。