Sqlite вставка проблема

-3

я получаю ошибки в моей программе поддержки Android, я новичок в android

2-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteLog: (1) таблица table3 не имеет столбца с именем name 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: Ошибка ввода имени = alinf password = asifjiejf username = aksdjfiej 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: android.database.sqlite.SQLiteException: таблица table3 не имеет столбца с именем name (код 1): при компиляции: INSERT INTO table3 (имя, пароль, имя пользователя) VALUES (?,?,?) 02-07 23: 41: 03.052 7613-7613/com.example.ks. doit E/SQLiteDatabase: at android.database.sqlite.SQLiteConnection.nativePrepareStatement (собственный метод) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 02 -07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at andr oid.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteProgram. (SQLiteProgram.java: 58) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteStatement. (SQLiteStatement.java:31) 02-07 23:41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 02-07 23: 41: 03.052 7613-7613/com.example. ks.doit E/SQLiteDatabase: at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at com. example.ks.doit.sqlite_database.insertData(sqlite_database.java:34) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at com.example.ks.doit.Insertion $ 1.onClick(Insertion.java:54) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.view.View.performCl ick (View.java:5198) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.view.View $ PerformClick.run(View.java:21147) 02- 07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.os.Handler.handleCallback(Handler.java:739) 02-07 23: 41: 03.052 7613-7613/com. example.ks.doit E/SQLiteDatabase: at android.os.Handler.dispatchMessage(Handler.java:95) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android. os.Looper.loop(Looper.java:148) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at android.app.ActivityThread.main(ActivityThread.java:5417) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at java.lang.reflect.Method.invoke (родной метод) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 02-07 23: 41: 03.052 7613-7613/com.example.ks.doit E/SQLiteDatabase: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 02-07 23: 41: 03.130 7613-7638/com.example.ks.doit W/EGL_emulation: eglSurfaceAttrib не реализовано 02-07 23: 41: 03.130 7613-7638/com.example.ks.doit W/OpenGLRenderer: Не удалось установить EGL_SWAP_BEHAVIOR на поверхность 0xabe82e60, error = EGL_SUCCESS 02-07 23: 41: 06.575 7613-7638/com.example.ks.doit E/Поверхность: getSlotFromBufferLocked: неизвестный буфер: 0xab84f230 02-07 23: 48: 30.318 7613-7619/com.example.ks.doit W/art: Приостановка всех потоков заняла: 9.032мс

//this is my Sqlite class code
public boolean insertData(String name, String userName, String password)
    {
        SQLiteDatabase mydatabase = helper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(Helper.NAME,name);
        contentValues.put(Helper.USERNAME,userName);
        contentValues.put(Helper.PASSWORD, password);
        long result = mydatabase.insert(Helper.TABLE_NAME,null,contentValues);
        if (result <= 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

class Helper extends SQLiteOpenHelper
    {

        //database information
        private static final String DATABASE_NAME="mydatabase3";
        private static final int DTABASE_VERSION=11;
        //table information
        private static final String TABLE_NAME="table3";
        private static final String NAME="name";
        private static final String USERNAME="username";
        private static final String PASSWORD="password";

        Context context;
        public Helper(Context context) {
            super(context,DATABASE_NAME, null, DTABASE_VERSION);
            this.context = context;
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            String CREATE_TABLE=
                    "CREATE TABLE"+
                            " "+Helper.TABLE_NAME+" "+
                            "("
                            +Helper.NAME+"TEXT,"
                            +Helper.USERNAME+"TEXT,"
                            +Helper.PASSWORD+"TEXT);";
            db.execSQL(CREATE_TABLE);
            Toast.makeText(context, "database create", Toast.LENGTH_LONG).show();
        }
  • 0
    Используйте отладчик и посмотрите, как выглядит ваша строка CREATE_TABLE . Вы найдете ошибку.
Теги:

1 ответ

2
Лучший ответ

Вам нужно добавить пробел перед типом данных столбца.

Попробуй это:

public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE=
                "CREATE TABLE"+
                        " "+Helper.TABLE_NAME+" "+
                        "("
                        +Helper.NAME+" "+"TEXT," //add space before column data type
                        +Helper.USERNAME+" "+"TEXT,"
                        +Helper.PASSWORD+" "+"TEXT);";
        db.execSQL(CREATE_TABLE);
        Toast.makeText(context, "database create", Toast.LENGTH_LONG).show();
    }
  • 0
    можешь показать мне как
  • 0
    Если вы используете Helper.NAME+"TEXT," имя столбца будет nameText . Поэтому вам нужно исправить его как Helper.NAME+" TEXT," или Helper.NAME+" "+"TEXT," теперь имя столбца будет называться name а его тип данных будет установлен в TEXT .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню