Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 不能';t从游标窗口读取第0行第0列。在从光标访问数据之前,请确保光标已正确初始化_Android_Sql_Sqlite - Fatal编程技术网

Android 不能';t从游标窗口读取第0行第0列。在从光标访问数据之前,请确保光标已正确初始化

Android 不能';t从游标窗口读取第0行第0列。在从光标访问数据之前,请确保光标已正确初始化,android,sql,sqlite,Android,Sql,Sqlite,我尝试在Android上学习SQLite。这是我的第一个SQL应用程序。所以我找不到这些错误的原因 这是MainActivity.java: public class MainActivity extends AppCompatActivity { ListView listView; final ArrayList<String> artNameList =new ArrayList<String>(); static ArrayList<

我尝试在Android上学习SQLite。这是我的第一个SQL应用程序。所以我找不到这些错误的原因

这是
MainActivity.java:

    public class MainActivity extends AppCompatActivity {
ListView listView;
    final ArrayList<String> artNameList =new ArrayList<String>();
    static ArrayList<Bitmap> artImageList = new ArrayList<Bitmap>();

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater =getMenuInflater();
        menuInflater.inflate(R.menu.add_art,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(item.getItemId()==R.id.add_art){
            Intent intent = new Intent(getApplicationContext(),Main2Activity.class);
            startActivity(intent);
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView)findViewById(R.id.listView);



        ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,artNameList);
        listView.setAdapter(arrayAdapter);

        String Url ="content://com.example.duygu.newartbook.ArtContentProvider";
        Uri artUri =Uri.parse(Url);

        ContentResolver contentResolver = getContentResolver();
        Cursor cursor = contentResolver.query(artUri,null,null,null,"name");

        if(cursor !=null ){
            while (cursor.moveToNext()){
                artNameList.add(cursor.getString(cursor.getColumnIndex(ArtContentProvider.NAME)));
                byte[] bytes = cursor.getBlob(cursor.getColumnIndex(ArtContentProvider.IMAGE));
                Bitmap image = BitmapFactory.decodeByteArray(bytes,0,bytes.length);
                artImageList.add(image);

                arrayAdapter.notifyDataSetChanged();


            }
        }
    }
}
这是我的错误:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.duygu.newartbook, PID: 26354
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.duygu.newartbook/com.example.duygu.newartbook.MainActivity}: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                      at android.app.ActivityThread.access$900(ActivityThread.java:157)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5525)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                   Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
                      at android.database.CursorWindow.nativeGetString(Native Method)
                      at android.database.CursorWindow.getString(CursorWindow.java:438)
                      at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
                      at android.database.CursorWrapper.getString(CursorWrapper.java:137)
                      at com.example.duygu.newartbook.MainActivity.onCreate(MainActivity.java:61)
                      at android.app.Activity.performCreate(Activity.java:6272)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)

我看到您正在SQLite数据库中存储图像。这通常不是一个好主意,正如我将要链接到的副本所解释的那样<代码>游标只能存储有限数量的数据。可能的重复项还缺少一个
游标。moveToFirst()
,这通常是一个很好的做法。但是我无法打开应用程序。我有一个运行时错误。如果删除此字符串,我可以打开应用程序,但没有意义。字符串Url=”content://com.example.duygu.newartbook.ArtContentProvider";否,它与您试图使用
getBlob()
检索的
byte[]
数组相关。如果您将查询限制为仅使用
ArtContentProvider.NAME
列,它是否仍会崩溃?
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.duygu.newartbook, PID: 26354
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.duygu.newartbook/com.example.duygu.newartbook.MainActivity}: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                      at android.app.ActivityThread.access$900(ActivityThread.java:157)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5525)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                   Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
                      at android.database.CursorWindow.nativeGetString(Native Method)
                      at android.database.CursorWindow.getString(CursorWindow.java:438)
                      at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
                      at android.database.CursorWrapper.getString(CursorWrapper.java:137)
                      at com.example.duygu.newartbook.MainActivity.onCreate(MainActivity.java:61)
                      at android.app.Activity.performCreate(Activity.java:6272)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)