Android Studio sqlite 데이터베이스에 데이터를 삽입 할 수 없습니다.

서 조엘

저는 현재 학교 프로젝트를 진행 중이며 음식 배달 서비스를 만들려고 노력하고 있으며 가입 / 로그인 데이터베이스가 필요합니다. 그러나 데이터베이스에 데이터를 생성 / 삽입하는 데 문제가 있습니다. 앱이 충돌하지 않지만 토스트 메시지에 "가입 실패"라는 메시지가 표시됩니다.

오류 로그에서 테이블을 생성 할 수있는 것 같지만 테이블에 데이터를 삽입 할 수 없습니다.

누군가 나에게 조언을 해주면 감사하겠습니다.

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = " mylist.db ";
public static final String TABLE_NAME = " mylist ";
public static final String USER_NAME = " username ";
public static final String EMAIL = " email ";
public static final String PHONE_NUMBER = " phone ";
public static final String PASSWORD = " password ";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

//CREATING THE DATABASE TABLE
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String createTable;
    createTable = "CREATE TABLE " + TABLE_NAME +
            " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, "+
            USER_NAME + " username " +
            EMAIL + " email ," +
            PHONE_NUMBER + " phone ,"+
            PASSWORD + " password ) ";
    sqLiteDatabase.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
}

public boolean addData(String username, String email, String phone, String password){
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(USER_NAME, username);
contentValues.put(EMAIL, email);
contentValues.put(PHONE_NUMBER, phone);
contentValues.put(PASSWORD, password);
long result = sqLiteDatabase.insert(TABLE_NAME, null, contentValues);
    if (result == -1) return false;
else {return true;}
}

}

오류 기록

    E/SQLiteLog: (1) table mylist has no column named email
E/SQLiteDatabase: Error inserting  phone =  email =  password =  username =j
    android.database.sqlite.SQLiteException: table mylist has no column named email (code 1): , while compiling: INSERT INTO  mylist ( phone , email , password , username ) 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.example.doonfood.DatabaseHelper.addData(DatabaseHelper.java:45)
        at com.example.doonfood.signuppage.ADDDATA(signuppage.java:33)
        at com.example.doonfood.signuppage.Signup(signuppage.java:48)
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
        at android.view.View.performClick(View.java:6294)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        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)

signuppage.java

public class signuppage extends AppCompatActivity {

DatabaseHelper myDB;
EditText SignupUserName;
EditText SignupEMail;
EditText SignupPhoneNumber;
EditText SignupPassword;
Button SignupBtn;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.signuppage);
    myDB = new DatabaseHelper(this);
    SignupUserName = findViewById(R.id.SignupUserName);
    SignupEMail = findViewById(R.id.SignupEMail);
    SignupPhoneNumber = findViewById(R.id.SignupPhoneNumber);
    SignupPassword = findViewById(R.id.SignupPassword);
    SignupBtn = findViewById(R.id.SignupBtn);
}

public void ADDDATA(String newUSER, String newEMAIL, String newPHONE, String newPASSWORD){
    boolean insertData = myDB.addData(newUSER, newEMAIL, newPHONE, newPASSWORD);
    if (insertData == true){
        Toast.makeText(signuppage.this, "Sign up successful.", Toast.LENGTH_SHORT).show();
    }else {
        Toast.makeText(signuppage.this, "Sign up unsuccessful.", Toast.LENGTH_SHORT).show();
    }
}

public void Signup(View view) {
    String newUSER, newEMAIL, newPHONE, newPASSWORD;
    newUSER = SignupUserName.getText().toString();
    newEMAIL = SignupEMail.getText().toString();
    newPHONE = SignupPhoneNumber.getText().toString();
    newPASSWORD = SignupPassword.getText().toString();
    if ((SignupUserName.length() != 0) || (SignupEMail.length() != 0) || (SignupPhoneNumber.length() != 0) || (SignupPassword.length() != 0)) {
        ADDDATA(newUSER, newEMAIL, newPHONE, newPASSWORD);
        SignupUserName.setText(newUSER);
        SignupEMail.setText(newEMAIL);
        SignupPhoneNumber.setText(newPHONE);
        SignupPassword.setText(newPASSWORD);
    } else {
        Toast.makeText(signuppage.this, "Text Field cannot be empty.", Toast.LENGTH_SHORT).show();
    }
}

}

Forpas

먼저 db / table / columns 이름에 대한 변수 정의에서 선행 및 후행 공백을 제거하십시오.

public static final String DATABASE_NAME = "mylist.db";
public static final String TABLE_NAME = "mylist";
public static final String ID = "ID"; // I added this definition
public static final String USER_NAME = "username";
public static final String EMAIL = "email";
public static final String PHONE_NUMBER = "phone";
public static final String PASSWORD = "password";

그런 다음 CREATE열의 데이터 유형을 정의하는 대신 이름을 두 번 사용하고 그 사이에 쉼표를 놓친 테이블 문을 수정합니다 .

createTable = "CREATE TABLE " + TABLE_NAME + "(" +
              ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
              USER_NAME + " TEXT," +
              EMAIL + " TEXT," +
              PHONE_NUMBER + " TEXT," +
              PASSWORD + " TEXT)";

이러한 변경을 수행 한 후에는 장치에서 앱을 제거해야합니다. 그래야 데이터베이스가 삭제되고 다시 실행되어 데이터베이스와 테이블이 다시 생성됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android SQlite 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

SQLite-android에 데이터를 삽입 할 수 없습니다.

분류에서Dev

Sqlite3 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

Android-SQLite 데이터베이스에서 데이터를 업데이트 할 수 없습니다.

분류에서Dev

데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

SQLITE 데이터베이스 Android에 액세스 할 수 없습니다.

분류에서Dev

두 번째 테이블, sqlite android에 데이터를 삽입 할 수 없습니다.

분류에서Dev

CodeIgniter 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

Android SQLite 데이터베이스를 쿼리 할 수 없습니다.

분류에서Dev

데이터베이스 테이블을 만들고 iOS sqlite3에 삽입 할 수 없습니다.

분류에서Dev

Android의 Sqlite 데이터베이스에 데이터를 저장할 수 없습니까?

분류에서Dev

cocos2dx의 sqlite3 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

Java의 MySQL 데이터베이스에 '를 삽입 할 수 없습니다.

분류에서Dev

sequelize seed는 SQLite에 데이터를 삽입 할 수 없습니다.

분류에서Dev

ASP.NET 등록 페이지 : SQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

데이터베이스에 데이터를 입력 할 수 없습니다.

분류에서Dev

sqlite 데이터베이스를 삭제할 수 없습니다.

분류에서Dev

데이터베이스 sqlite를 실행할 수 없습니다.

분류에서Dev

Django를 사용하여 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

PHP를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

(PHP, AJAX, JQ)를 사용하여 MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

AJAX를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

iOS에서 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

조각 내에서 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

데이터베이스 Android Sqlite를 열 수 없습니다.

분류에서Dev

해시 된 데이터를 Wordpress 데이터베이스에 삽입 할 수 없습니다

분류에서Dev

PHP의 mysql 데이터베이스에 json 데이터를 삽입 할 수 없습니다.

분류에서Dev

데이터베이스 ms-access vb에 데이터를 삽입 할 수 없습니다.

Related 관련 기사

  1. 1

    Android SQlite 데이터베이스에 데이터를 삽입 할 수 없습니다.

  2. 2

    SQLite-android에 데이터를 삽입 할 수 없습니다.

  3. 3

    Sqlite3 데이터베이스에 삽입 할 수 없습니다.

  4. 4

    Android-SQLite 데이터베이스에서 데이터를 업데이트 할 수 없습니다.

  5. 5

    데이터베이스에 데이터를 삽입 할 수 없습니다.

  6. 6

    MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

  7. 7

    SQLITE 데이터베이스 Android에 액세스 할 수 없습니다.

  8. 8

    두 번째 테이블, sqlite android에 데이터를 삽입 할 수 없습니다.

  9. 9

    CodeIgniter 데이터베이스에 삽입 할 수 없습니다.

  10. 10

    Android SQLite 데이터베이스를 쿼리 할 수 없습니다.

  11. 11

    데이터베이스 테이블을 만들고 iOS sqlite3에 삽입 할 수 없습니다.

  12. 12

    Android의 Sqlite 데이터베이스에 데이터를 저장할 수 없습니까?

  13. 13

    cocos2dx의 sqlite3 데이터베이스에 삽입 할 수 없습니다.

  14. 14

    Java의 MySQL 데이터베이스에 '를 삽입 할 수 없습니다.

  15. 15

    sequelize seed는 SQLite에 데이터를 삽입 할 수 없습니다.

  16. 16

    ASP.NET 등록 페이지 : SQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

  17. 17

    데이터베이스에 데이터를 입력 할 수 없습니다.

  18. 18

    sqlite 데이터베이스를 삭제할 수 없습니다.

  19. 19

    데이터베이스 sqlite를 실행할 수 없습니다.

  20. 20

    Django를 사용하여 데이터베이스에 데이터를 삽입 할 수 없습니다.

  21. 21

    PHP를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

  22. 22

    (PHP, AJAX, JQ)를 사용하여 MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

  23. 23

    AJAX를 사용하여 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

  24. 24

    iOS에서 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

  25. 25

    조각 내에서 데이터베이스에 데이터를 삽입 할 수 없습니다.

  26. 26

    데이터베이스 Android Sqlite를 열 수 없습니다.

  27. 27

    해시 된 데이터를 Wordpress 데이터베이스에 삽입 할 수 없습니다

  28. 28

    PHP의 mysql 데이터베이스에 json 데이터를 삽입 할 수 없습니다.

  29. 29

    데이터베이스 ms-access vb에 데이터를 삽입 할 수 없습니다.

뜨겁다태그

보관