java - sqlite java 中没有命名的列

标签 java android sqlite

我已经多次看到找不到no column name的解决方案。谁能帮帮我吗? 预先非常感谢您:)

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_LUGGAGE_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" +
                                        KEY_NAME + " TEXT NOT NULL," + 
                                        KEY_CODE + " TEXT NOT NULL," + 
                                        KEY_NUMBER + " TEXT NOT NULL," +")";
    db.execSQL(CREATE_LUGGAGE_TABLE);
}



public class DatabaseHandler extends SQLiteOpenHelper {

    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_NAME = "LuggageDataCenter";

    // Contacts table name
    private static final String TABLE_CONTACTS = "luggage";

    // Contacts Table Columns names
    private static final String KEY_NAME = "name";
    private static final String KEY_CODE = "code";
    private static final String KEY_NUMBER = "number";

    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_LUGGAGE_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_NAME + " TEXT NOT NULL," + KEY_CODE + " TEXT NOT NULL," + KEY_NUMBER + " TEXT NOT NULL );";
        db.execSQL(CREATE_LUGGAGE_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

        // Create tables again
        onCreate(db);
    }

    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */

    // Adding new contact
    void addContact(Luggage luggage) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, luggage.getName()); // Contact Name
        values.put(KEY_CODE, luggage.getCode()); // Contact Phone
       // values.put(KEY_NUMBER, luggage.getNumber()); // Contact Phone

        // Inserting Row
        db.insert(TABLE_CONTACTS, null, values);
        db.close(); // Closing database connection
    }

    // Getting All Contacts
    public List<Luggage> getAllContacts() {
        List<Luggage> contactList = new ArrayList<Luggage>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Luggage luggage = new Luggage();
                luggage.setName(cursor.getString(0));
            //    luggage.setCode(cursor.getString(1));
          //      luggage.setNumber(cursor.getString(2));
                // Adding contact to list
                contactList.add(luggage);
            } while (cursor.moveToNext());
        }

        // return contact list
        return contactList;
    }

}

堆栈跟踪

01-07 18:45:43.070: I/Adreno200-EGL(16078): Reconstruct Branch: NOTHING
01-07 18:45:51.950: W/IInputConnectionWrapper(16078): showStatusIcon on inactive InputConnection
01-07 18:45:53.600: E/SQLiteDatabase(16078): Error inserting code=100000HKG name=Lee Chung Ming 
01-07 18:45:53.600: E/SQLiteDatabase(16078): android.database.sqlite.SQLiteConstraintException: luggage.number may not be NULL (code 19)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:787)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at com.airportapplication.app.DatabaseHandler.addContact(DatabaseHandler.java:64)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at com.airportapplication.app.LuggageVer.onActivityResult(LuggageVer.java:87)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.app.Activity.dispatchActivityResult(Activity.java:5197)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3160)
01-07 18:45:53.600: E/SQLiteDatabase(16078):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3207)

我已经重新安装了该应用程序,但仍然无法使用。

最佳答案

您在末尾添加了额外的 , & +,因此请正确格式化它,如下所示:

String CREATE_LUGGAGE_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_NAME + " TEXT NOT NULL," + KEY_CODE + " TEXT NOT NULL," + KEY_NUMBER + " TEXT NOT NULL);";

关于java - sqlite java 中没有命名的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968167/

相关文章:

android - SimpleCursorAdapter 和 ListView 问题

在查询中跨越多行的 SQL 字符串值

java - 映射以在 Dozer 中设置映射解决方法

java - GWT - 如何异步发送表单?

android - 如何禁用/抑制 IDEA "Rendering problems"警告

ruby-on-rails - 在 windows xp 上为 ruby​​ on rails 安装 sqlite?

sql - SQLite : need a Emulation 中没有分区排名

java - 在 Java AES 加密中使用提供程序

java - 无法访问对象的方法

android - 如何开启调用电话功能但不设置默认电话号码