如何在android中从sqlite数据库插入和获取数据?
我已经写了这段代码,通过使用“for”循环在数据库中插入数据,我也想查看数据库的数据,但应用程序正在崩溃。我找不到它的问题,请帮助我如何在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
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;
}