无法将数据插入android中的sqlite数据库

无法将数据插入android中的sqlite数据库,android,database,sqlite,Android,Database,Sqlite,这个问题已经回答了很多次,但仍然找不到我的错误。我正在创建一个数据库和一个表,以便向SQLite数据库中插入一些值。但它显示了SQLite异常 这是我尝试过的代码 主要活动: 当我单击Register按钮时,它应该创建数据库、表,然后将数据输入表中 private static final int DATABASE_VERSION = 2; private static final String DATABASE_NAME = "userDB"; private static final Str

这个问题已经回答了很多次,但仍然找不到我的错误。我正在创建一个数据库和一个表,以便向SQLite数据库中插入一些值。但它显示了SQLite异常

这是我尝试过的代码

主要活动:

当我单击Register按钮时,它应该创建数据库、表,然后将数据输入表中

private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "userDB";
private static final String TABLE_USER = "users";

private static final String KEY_ID = "id";
private static final String KEY_USERNAME = "username";
private static final String KEY_PASSWORD = "password";

db = new DataBaseHandler(RegisterActivity.this); // my database handler

    username = (EditText) findViewById(R.id.usernameRegister);
    password = (EditText) findViewById(R.id.passwordRegister);
    registerSave = (Button) findViewById(R.id.saveRegister);

    registerSave.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            usernameInput = username.getText().toString();
            passwordInput = password.getText().toString();

            //createDB();
            Log.d("Insert: ", "Inserting ..");
            db.addUsers(new Users(""+usernameInput,""+passwordInput));
        //  db.addUsers(new Users("password",passwordInput));

            Log.d("inserted", ""+db);

            Log.d("inputs", "" + usernameInput + ":" + passwordInput);

        }
    });
这是我的数据库处理程序类

public DataBaseHandler(Context context) {

    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS "+TABLE_USER+" (" + KEY_ID
            + "INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_USERNAME + " TEXT,"
            + KEY_PASSWORD + " TEXT" + ")";
    db.execSQL(CREATE_USER_TABLE);
    Log.d("sqlite DB:","Created"+db.toString());

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS "+ TABLE_USER);
    onCreate(db);
}

// Adding new contact
void addUsers(Users users) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_USERNAME, users.getUsername()); // User Name
    values.put(KEY_PASSWORD, users.getPassword()); // Password

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

Users getUser(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_USER, new String[] { KEY_ID,
            KEY_USERNAME, KEY_PASSWORD }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    Users users = new Users(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2));
    // return contact
    return users;
}
这是userclass,用于获取用户数据

public class Users {

int _id;
String _username;
String _password;

public Users() {

}

public Users(int id, String username, String password) {
    this._id = id;
    this._username = username;
    this._password = password;
}

public Users(String username, String password) {
    this._username = username;
    this._password = password;
}

public int getId() {
    return this._id;
}

public void setId(int id) {
    this._id = id;
}

public String getUsername() {
    return this._username;
}

public void setUsername(String username) {
    this._username = username;
}

public String getPassword() {
    return this._password;
}

public void setPassword(String password) {
    this._password = password;
}
}

我还发布了输出的日志:

日志:

01-07 07:38:19.613: E/SQLiteDatabase(3467): Error inserting username=sagar password=asdfg
01-07 07:38:19.613: E/SQLiteDatabase(3467): android.database.sqlite.SQLiteException: no such table: users (code 1): , while compiling: INSERT INTO users(username,password) VALUES (?,?)
01-07 07:38:19.613: E/SQLiteDatabase(3467):     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
`
我被打动了。需要帮助。

尝试此查询

String CREATE_USERS_TABLE= java.lang.String.format("CREATE TABLE IF NOT EXISTS %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT, %s TEXT);", TABLE_USER,KEY_ID, KEY_USERNAME,KEY_PASSWORD);
请尝试此查询

String CREATE_USERS_TABLE= java.lang.String.format("CREATE TABLE IF NOT EXISTS %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT, %s TEXT);", TABLE_USER,KEY_ID, KEY_USERNAME,KEY_PASSWORD);

首先,在create table查询中搜索缺少的空格:

String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS "+TABLE_USER+" (" + KEY_ID
        + "INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_USERNAME + " TEXT,"
        + KEY_PASSWORD + " TEXT" + ")";
可能您发现
键ID
整型主键自动递增,…
之间缺少空格。您必须提高数据库版本,才能再次调用
public void onCreate(SQLiteDatabase db)


您可以记录数据库创建sql并在控制台中亲自尝试。

首先,搜索创建表查询以查找缺少的空白:

String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS "+TABLE_USER+" (" + KEY_ID
        + "INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_USERNAME + " TEXT,"
        + KEY_PASSWORD + " TEXT" + ")";
可能您发现
键ID
整型主键自动递增,…
之间缺少空格。您必须提高数据库版本,才能再次调用
public void onCreate(SQLiteDatabase db)


您可以记录数据库创建sql,然后自己在控制台中尝试。

您在
创建表(如果不存在)部分遇到了
空白

您可以使用此

String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_USER + "("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_USERNAME + " TEXT, " + KEY_PASSWORD + " TEXT )";

卸载并运行你的应用程序。快乐编码。

你在
创建表(如果不存在)部分遇到了
空白

您可以使用此

String CREATE_USER_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_USER + "("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_USERNAME + " TEXT, " + KEY_PASSWORD + " TEXT )";

卸载并运行你的应用程序。快乐编码。

表用户的值
?问题在于
字符串创建用户表
@AnandSingh:我已经更新了我的post@IntelliJAmiya:您能解释一下该怎么做吗?尝试使用
表用户的数据库版本=1值
问题在这里
字符串创建用户表
@AnandSingh:我已经更新了我的post@IntelliJAmiya:您能解释一下该怎么做吗?请尝试使用数据库版本=1谢谢您的帮助。它起作用了。查询中缺少空格。@SagarPawar yes。往前走,谢谢你的帮助。它起作用了。查询中缺少空格。@SagarPawar yes。向前走。