Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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
Java 在Android中从sqlite获取数据时,没有这样的列错误_Java_Android - Fatal编程技术网

Java 在Android中从sqlite获取数据时,没有这样的列错误

Java 在Android中从sqlite获取数据时,没有这样的列错误,java,android,Java,Android,//日志 致命异常:主 进程:com.example.user3.security,PID:15620 java.lang.RuntimeException:无法启动活动组件信息{com.example.user3.security/com.example.user3.security.ProfileActivity}:android.database.sqlite.SQLiteException:没有这样的列:Akshay代码1:,编译时:从myTable中选择*其中Email=Akshay

//日志

致命异常:主 进程:com.example.user3.security,PID:15620 java.lang.RuntimeException:无法启动活动组件信息{com.example.user3.security/com.example.user3.security.ProfileActivity}:android.database.sqlite.SQLiteException:没有这样的列:Akshay代码1:,编译时:从myTable中选择*其中Email=Akshay 在android.app.ActivityThread.performLaunchActivityActivityThread.java:2449 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2509 在android.app.ActivityThread.access$1000ActivityThread.java:153 在android.app.ActivityThread$H.handleMessageActivityThread.java:1373 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:154 位于android.app.ActivityThread.mainActivityThread.java:5529 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:739 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:629 原因:android.database.sqlite.SQLiteException:无此类列:Akshay代码1:,编译时:从myTable中选择*其中Email=Akshay 在android.database.sqlite.SQLiteConnection.nativePrepareStatementNative方法中 位于android.database.sqlite.SQLiteConnection.acquirePreparedStatementSQLiteConnection.java:887 在android.database.sqlite.SQLiteConnection.prepareSQLiteConnection.java:498 位于android.database.sqlite.SQLiteSession.prepareSQLiteSession.java:588 在android.database.sqlite.SQLiteProgram.SQLiteProgram.java:58 位于android.database.sqlite.SQLiteQuery.SQLiteQuery.java:37 位于android.database.sqlite.SQLiteDirectCursorDriver.querySQLiteDirectCursorDriver.java:44 位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactorySQLiteDatabase.java:1316 位于android.database.sqlite.SQLiteDatabase.rawQuerySQLiteDatabase.java:1255 位于com.example.user3.security.myDbHelper.getDatamyDbHelper.java:101 位于com.example.user3.security.ProfileActivity.onCreateProfileActivity.java:56 在android.app.Activity.performCreateActivity.java:6303 在android.app.Instrumentation.callActivityOnCreateInstrumentation.java:1108 在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2402 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2509 在android.app.ActivityThread.access$1000ActivityThread.java:153 在android.app.ActivityThread$H.handleMessageActivityThread.java:1373 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:154 位于android.app.ActivityThread.mainActivityThread.java:5529 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:739 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:629 11-27 12:01:24.886 15620-15620/com.example.user3.security E/MQSEventManagerDelegate:未能获取MQSService


您的SQL查询有问题。当前查询正在查找另一个名为Akshay的列。您需要修改代码,以便查询具有带参数值的前导和尾随单引号

           Cursor m= a.getData("Akshay");
            StringBuffer sb= new StringBuffer();
            if(m!=null&&m.getCount()>0)
            {while (m.moveToNext())
            {
                sb.append(m.getString(m.getColumnIndex("Name")));


            }

                nametext.setText(sb.toString());

            }


       //Mydbhelper class//

       public Cursor getData(String ii) {


                SQLiteDatabase db = this.getReadableDatabase();

                Cursor res = db.rawQuery("select * from myTable where 
                 Email="+ii,null);

                return res;
      }

您的查询有问题。您正在运行以下文字查询:

Cursor res = db.rawQuery("select * from myTable where 
             Email='"+ii+"'",null);
如果仔细阅读错误消息,您将看到关于无法找到列Akshay的抱怨,该列当然不是要成为列,而是最终查询中的字符串文字

这里的修复方法是正确绑定查询中的字符串文字。考虑下面的GETDATA重构:


您已经更改了表架构,所以只需在helper类构造函数中更新数据库版本即可。我的数据库版本为2,请将其更改为3。如果问题仍然存在,请检查您是否正在创建带有电子邮件字段的表。请注意,您可能创建了“电子邮件未发送电子邮件未工作”字段,请将您的查询更改为…,其中电子邮件=“+ii+”字符串值应位于where子句中的单引号中
select * from myTable where Email = Akshay;
public Cursor getData(String ii) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery("select * from myTable where Email = ?",
        new String[] { ii }
    );

    return res;
}