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中从sqlite数据库插入和获取数据?_Android_Sqlite - Fatal编程技术网

如何在android中从sqlite数据库插入和获取数据?

如何在android中从sqlite数据库插入和获取数据?,android,sqlite,Android,Sqlite,我已经写了这段代码,通过使用“for”循环在数据库中插入数据,我也想查看数据库的数据,但应用程序正在崩溃。我找不到它的问题,请帮助我 package com.smshah.database; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.database.Cursor; import android.database.sqlite.SQL

我已经写了这段代码,通过使用“for”循环在数据库中插入数据,我也想查看数据库的数据,但应用程序正在崩溃。我找不到它的问题,请帮助我

package com.smshah.database;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;


public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView t1=(TextView)findViewById(R.id.textView1);
    TextView t2=(TextView)findViewById(R.id.textView2);
    TextView t3=(TextView)findViewById(R.id.textView3);

    SQLiteDatabase db = openOrCreateDatabase("mapdb", MODE_PRIVATE, null);
    db.execSQL("CREATE TABLE IF NOT EXISTS maptb (rssi INT(4),xval INT(4),yval INT(4));");
    int x=0;
    int y=0;
    int r=0;

    for (int i = 0; i <= 100; i++) 
    {
        db.execSQL("INSERT INTO maptb VALUES("+r+","+x+","+y+");");
        x = x + 1;
        r = r - 1;
    }

    Cursor resultSet = db.rawQuery("Select * from maptb",null);
    resultSet.moveToFirst();
    int rssi = resultSet.getInt(resultSet.getColumnIndex("rssi"));
    int xval = resultSet.getInt(resultSet.getColumnIndex("xval"));
    int yval = resultSet.getInt(resultSet.getColumnIndex("yval"));

    t1.setText(rssi);
    t2.setText(xval);
    t3.setText(yval);

    db.close();
}

}

看来你的崩溃与数据库无关。它说没有发现资源异常。你能指出主活动第47行是什么吗?您应该设置TextView的内容

编辑

推送到TextView的是int,而text view假定这些值是资源标识符而不是字符串。因此,请执行以下操作,以使TextView写入字符串而不是资源标识符

t1.setText(rssi + "");
t2.setText(xval + "");
t3.setText(yval + "");

尝试创建一个查询函数,与rawQuery不同,它更容易阅读

阅读太多,请尝试:

public List<MapXYZ> getAll() {
        List<MapXYZ> mapList = new ArrayList<MapXYZ>();
        database = connection.getReadableDatabase();

        Cursor cursor = database.query(SQLConnection.TABLE_MAPXYZ, GET_ALL, null, null, null, null, null, null);

        if (cursor == null) //something goes wrong
            return null;

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                MapXYZ linemap = new MapXYZ();
                linemap.setX(cursor.getInt(0));
                linemap.setY(cursor.getInt(1));
                linemap.setZ(cursor.getInt(2));

                // Adding line to the list
                mapList.add(linemap);
            } while (cursor.moveToNext());
        }
        return mapList;
    }
public List getAll(){
List mapList=new ArrayList();
database=connection.getReadableDatabase();
Cursor Cursor=database.query(SQLConnection.TABLE_MAPXYZ,GET_ALL,null,null,null,null,null,null);
if(cursor==null)//出了问题
返回null;
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
MapXYZ linemap=新的MapXYZ();
linemap.setX(cursor.getInt(0));
linemap.setY(cursor.getInt(1));
linemap.setZ(cursor.getInt(2));
//将行添加到列表中
mapList.add(线条图);
}while(cursor.moveToNext());
}
返回地图列表;
}
一些提示:创建final变量以避免遗漏表名和列名。。。 查看更多关于


PS:我没有测试这段代码,我使用了我自己的代码并重命名了变量

你能发布LogCat吗,这样我们就可以了解它崩溃的原因了。@osayilgan我为你添加了LogCat MainActivity上的内容。onCreate(MainActivity.java:47)?@osayilgan我添加了整个java代码请查看它我不知道你的sql代码是否有问题,但是这个logcat显示,在设置文本视图内容的行上有错误。查看我的编辑以消除此错误。这是您的观点:对我来说,查询比原始查询更难阅读!如果您了解SQL,您会发现使用
rawQuery()
execSQL()
更容易,但这并不能回答问题;它与
资源$NotFoundException
无关。
    //return false if something goes wrong
 public boolean add(int x, int y, int z) { 

    database = connection.getWritableDatabase();

      ContentValues values = new ContentValues();

      values.put(SQLConnection.COLUMN_X, x);
      values.put(SQLConnection.COLUMN_Y, y);
      values.put(SQLConnection.COLUMN_Z, z);

      return database.insert(SQLConnection.TABLE_MAPXYZ, null, values) != -1 ? true : false;
 }
public List<MapXYZ> getAll() {
        List<MapXYZ> mapList = new ArrayList<MapXYZ>();
        database = connection.getReadableDatabase();

        Cursor cursor = database.query(SQLConnection.TABLE_MAPXYZ, GET_ALL, null, null, null, null, null, null);

        if (cursor == null) //something goes wrong
            return null;

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                MapXYZ linemap = new MapXYZ();
                linemap.setX(cursor.getInt(0));
                linemap.setY(cursor.getInt(1));
                linemap.setZ(cursor.getInt(2));

                // Adding line to the list
                mapList.add(linemap);
            } while (cursor.moveToNext());
        }
        return mapList;
    }