Java “中的语法错误”;从registeruser中选择ID,其中用户名=?和密码=?”;
登录我的系统时出现此代码问题。 语法错误,但我似乎无法找到它,希望有人可以帮助! 我刚刚创建了第二个表来存储用户登录信息,请遵循youtube上的教程 错误:Java “中的语法错误”;从registeruser中选择ID,其中用户名=?和密码=?”;,java,android,sql,sqlite,Java,Android,Sql,Sqlite,登录我的系统时出现此代码问题。 语法错误,但我似乎无法找到它,希望有人可以帮助! 我刚刚创建了第二个表来存储用户登录信息,请遵循youtube上的教程 错误: E/SQLiteLog: (1) near "andpassword": syntax error in "SELECT ID FROM registeruser WHERE username=? andpassword=?" D/AndroidRuntime: Shutting down VM
E/SQLiteLog: (1) near "andpassword": syntax error in "SELECT ID FROM registeruser WHERE username=?
andpassword=?"
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.locationadmin, PID: 10953
android.database.sqlite.SQLiteException: near "andpassword": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT ID FROM registeruser WHERE username=?andpassword=?
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
以下是onclicklistener的代码
mButtonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user = mTextUsername.getText().toString().trim();
String pwd = mTextPassword.getText().toString().trim();
Boolean res = myDB.checkUser(user, pwd);
if (res == true)
{
Intent UserLoggedIn = new Intent(ActivityLogin.this, com.example.locationadmin.Activities.UserActivity.class);
startActivity(UserLoggedIn);
}
else{
Toast.makeText(ActivityLogin.this, "Login error", Toast.LENGTH_SHORT).show();
}
}
});
下面是myDatabaseHelper.java中的代码
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_NAME +
" (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_LOCATION + " TEXT, " +
COLUMN_COUNTY + " TEXT, " +
COLUMN_DESCRIPTION + " TEXT, " +
COLUMN_INROUTE + " TEXT, " +
COLUMN_LAT + " TEXT, " +
COLUMN_LONG + " TEXT, " +
COLUMN_POSITION + " TEXT, " +
COLUMN_IMG_URL + " TEXT, " +
COLUMN_IMG_URL2 + " TEXT, " +
COLUMN_IMG_URL3 + " TEXT );";
db.execSQL(query);
String query1 = "CREATE TABLE " + TABLE_REG +
" (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_1 + " TEXT, " +
COL_2 + " TEXT, " +
COL_3 + " TEXT );";
db.execSQL(query1);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_REG);
onCreate(db);
}
public long addUser(String user, String password) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("username", user);
contentValues.put("password", password);
long res = db.insert("registeruser", null, contentValues);
db.close();
return res;
}
public boolean checkUser(String username, String password) {
String[] columns = {COL_1};
SQLiteDatabase db = getReadableDatabase();
String selection = COL_2 + "=?" + "and" + COL_3 + "=?";
String[] selectionArgs = {username, password};
Cursor cursor = db.query(TABLE_REG, columns, selection, selectionArgs, null, null, null);
int count = cursor.getCount();
cursor.close();
db.close();
if (count > 0)
return true;
else
return false;
}
您只需要在“and”中的
前后和之间留出一个空格
试一试
在助手中的checkUser
方法中:String selection=COL_2+“=?”+”和“+COL_3+”=?”
您可能需要在需要的地方添加一些空格。也可以在`和`之后添加空格。但这不应该属于“由打字错误引起的”非主题问题类别吗?两者都是如此。无论如何,对于低级用户来说,清晰的代码示例更好。。答案更清楚。。(评论界面太差)
String selection = COL_2 + "=?" + " and " + COL_3 + "=?";