0

レイアウトのフィールドからデータ(同じクラス)を収集し、それをmsqliteデータベース内に配置しようとする次のコードがあります。

public void submitOrder(Order order_) {
    SQLiteDatabase db=DBHelper.getWritableDatabase();
    ContentValues cv=new ContentValues();
        cv.put(DatabaseHelper.colName,      order_.name);
        cv.put(DatabaseHelper.colLink,      order_.link);
        cv.put(DatabaseHelper.colPrice,     order_.price);
        cv.put(DatabaseHelper.colDateYear,  order_.year);
        cv.put(DatabaseHelper.colDateMonth, order_.month);
        cv.put(DatabaseHelper.colDateDay,   order_.day);

        db.insert(DatabaseHelper.orderTable, null, cv);
    db.close();

そして私は私が作成したMSQliteデータベースヘルパークラスを持っています:

package com.Sagi.MyOrders;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

static final String dbName="DBname";
static final String orderTable="Orders";
static final String colName="OrderName";
static final String colLink="OrderLink";
static final String colDateYear="DateYear";
static final String colDateMonth="DateMonth";
static final String colDateDay="DateDay";
static final String colPrice="OrderPrice";
static String CREATE_T;

public DatabaseHelper(Context context) {
      super(context, dbName, null,1);
}
/** Called when the activity is first created. */
@Override
public void onCreate(SQLiteDatabase db) {
        CREATE_T="CREATE TABLE orderTable ("
                + "colName TEXT,"
                + "colLink TEXT,"
                + "colPrice TEXT,"
                + "colDateYear INTEGER,"
                + "colDateMonth INTEGER,"
                + "colDateDay INTEGER);";
        db.execSQL(CREATE_T);
        Log.e("Table creator","Table Created successfully");
     }

それを実行し、ボタンをクリックして情報をDBに保存すると、エラーメッセージが表示されます。

06-02 06:19:43.454: E/Database(1570): android.database.sqlite.SQLiteException: table Orders has no column named OrderPrice: , while compiling: INSERT INTO Orders(DateDay, DateMonth, OrderLink, OrderName, OrderPrice, DateYear) VALUES(?, ?, ?, ?, ?, ?);

そして、Iレベルのメッセージ:

06-02 06:19:43.444: I/Database(1570): sqlite returned: error code = 1, msg = table Orders has no column named OrderPrice

あなたが助けることができることを願っています...ありがとう!

4

1 に答える 1

1

それは言うtable Orders has no column named OrderPrice。その理由は、データベースを更新しないためです。アプリをアンインストール/再インストールするだけです。そして、すべてが大丈夫になります。

編集後:

あなたはあなたのテーブルを作成します

CREATE_T="CREATE TABLE orderTable ("
                + "colName TEXT,"
                + "colLink TEXT,"
                + "colPrice TEXT,"
                + "colDateYear INTEGER,"
                + "colDateMonth INTEGER,"
                + "colDateDay INTEGER);";
        db.execSQL(CREATE_T);

つまり、という名前のテーブルを作成しますorderTable

しかし、あなたの挿入物では:

public void submitOrder(Order order_) {
    SQLiteDatabase db=DBHelper.getWritableDatabase();
    ContentValues cv=new ContentValues();
        cv.put(DatabaseHelper.colName,      order_.name);
        cv.put(DatabaseHelper.colLink,      order_.link);
        cv.put(DatabaseHelper.colPrice,     order_.price);
        cv.put(DatabaseHelper.colDateYear,  order_.year);
        cv.put(DatabaseHelper.colDateMonth, order_.month);
        cv.put(DatabaseHelper.colDateDay,   order_.day);

        db.insert(DatabaseHelper.orderTable, null, cv); // This line
    db.close();

DatabaseHelper.orderTableどちらを使用するかはstatic final String orderTable="Orders"; 等しくないため、このエラーが発生します。

orderTable変数またはテーブル名を変更すると、問題ありません

お役に立てれば

于 2012-06-02T06:42:25.030 に答える