Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android.database.sqlite.SQLiteException:没有这样的列:列\用户\用户名_Android_Sqlite_Android Sqlite - Fatal编程技术网

android.database.sqlite.SQLiteException:没有这样的列:列\用户\用户名

android.database.sqlite.SQLiteException:没有这样的列:列\用户\用户名,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我知道StackOverflow可能看到过太多关于没有此类专栏的问题。 但就我搜索而言,我找到的是使用rawQuery(),并使用单个字符串和命令。 根据@Code学徒的要求,他建议我使用query(),我正在创建我的 下面的此方法连接到一个表,以便用户检查登录/密码,然后启动另一个活动。 我的错误是“没有这样的专栏” 在发布这篇文章之前,我花了相当长的时间寻找答案,并尝试了其他东西,但都无济于事。 所以,如果它是另一个的副本,我很抱歉 public boolean search_access(

我知道StackOverflow可能看到过太多关于没有此类专栏的问题。
但就我搜索而言,我找到的是使用
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 = ?";