android.database.sqlite.SQLiteException:没有这样的列:列\用户\用户名
我知道StackOverflow可能看到过太多关于没有此类专栏的问题。android.database.sqlite.SQLiteException:没有这样的列:列\用户\用户名,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我知道StackOverflow可能看到过太多关于没有此类专栏的问题。 但就我搜索而言,我找到的是使用rawQuery(),并使用单个字符串和命令。 根据@Code学徒的要求,他建议我使用query(),我正在创建我的 下面的此方法连接到一个表,以便用户检查登录/密码,然后启动另一个活动。 我的错误是“没有这样的专栏” 在发布这篇文章之前,我花了相当长的时间寻找答案,并尝试了其他东西,但都无济于事。 所以,如果它是另一个的副本,我很抱歉 public boolean search_access(
但就我搜索而言,我找到的是使用
rawQuery()
,并使用单个字符串和命令。根据@Code学徒的要求,他建议我使用
query()
,我正在创建我的
下面的此方法连接到一个表,以便用户检查登录/密码,然后启动另一个活动。我的错误是“没有这样的专栏” 在发布这篇文章之前,我花了相当长的时间寻找答案,并尝试了其他东西,但都无济于事。
所以,如果它是另一个的副本,我很抱歉
public boolean search_access(user user){
SQLiteDatabase db = this.getReadableDatabase();
String [] tabela_user = new String[]{"usuaid","username","password"};
String [] whereargs = new String[]{user.getUsername()};
String compare_user = "COLUMN_USER_USERNAME = ?";
Cursor cursor = db.query(TABLE_USER, tabela_user, compare_user, whereargs, null, null, null );
cursor.moveToFirst();
if(cursor.getString(0).equals(user.getPassword())) {
return true;
} else{
CharSequence text = "Incorrect Username/Password!!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(null, text, duration);
toast.show();
return false;
}
}
错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.relatoriodeobras, PID: 2714
android.database.sqlite.SQLiteException: no such column: COLUMN_USER_USERNAME (code 1): , while compiling: SELECT usuaid, username, password FROM usuario WHERE COLUMN_USER_USERNAME = ?
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1202)
at com.example.relatoriodeobras.projeto_db.busca_acesso(projeto_db.java:173) <- ERROR LINE HERE, which is Cursor's
at com.example.relatoriodeobras.MainActivity$1.onClick(MainActivity.java:42)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
用户类
package com.example.relatoriodeobras;
import android.database.sqlite.SQLiteDatabase;
public class user {
private static projeto_db dbHelper;
private static SQLiteDatabase database;
int id = 0;
private String username;
String password;
String created_at;
static boolean registrado = false;
public int getId() {
return id;
}
public void setId() {
this.id = id++;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String getCreated_at() {
return created_at;
}
}
我非常感谢您在代码组织方面提供的帮助,因为我想你们可能会认为这是一个混乱的局面。您的错误并不存在。您没有名为
column\u USER\u USERNAME
的列
不过,您确实有一个同名的变量
它的字符串值是“username”
备选案文1:
String compare_user = projeto_db.COLUMN_USER_USERNAME + " = ?";
备选案文2:
String compare_user = "username = ?";
旁白:不要以纯文本形式存储密码可能是因为错误是正确的,而且您的表中没有名为
column\u USER\u USERNAME的列
。您可能会考虑发布完整代码<代码> SqtLeOpenOpenHelp<代码>,或者至少它的<代码> OnCeCuto()/代码>和<代码> OnUpGeRead()<代码>方法。我知道。这只是我在做的一个测试。因为我还没有深入研究密码学。但是谢谢你的解释。我会想办法解决这个问题。
String compare_user = "username = ?";