Android:SQLite在数据库中的插入
我无法插入数据库,这段代码有什么问题。提前谢谢Android:SQLite在数据库中的插入,android,sqlite,Android,Sqlite,我无法插入数据库,这段代码有什么问题。提前谢谢 public long insertGrille(Grille grille) { ContentValues values = new ContentValues(); //values.put(COL_ID, grille.getId()); values.put(COL_X, grille.getxCoordinate()); Log.i("COL_X, grille.getxCoordinate()", gr
public long insertGrille(Grille grille) {
ContentValues values = new ContentValues();
//values.put(COL_ID, grille.getId());
values.put(COL_X, grille.getxCoordinate());
Log.i("COL_X, grille.getxCoordinate()", grille.getxCoordinate() + "");
values.put(COL_Y, grille.getyCoordinate());
values.put(COL_SSID, grille.getSsid());
values.put(COL_RSSI, grille.getrssi());
Log.i("insertion", values + "");
Log.i("insertion", grille.getxCoordinate() + "");
Log.i("insertion", bdd.insert(TABLE_RSSI, null, values) + "");
return bdd.insert(TABLE_RSSI, null, values);
}
创建数据库:
public class MaBaseSQLite extends SQLiteOpenHelper{
private static final String TABLE_RSSI = "table_rssi";
private static final String COL_ID = "ID";
private static final String COL_X = "Xcoordinate ";
private static final String COL_Y = "Ycoordinate ";
private static final String COL_SSID = "SSID";
private static final String COL_RSSI = "RSSI";
private static final String CREATE_BDD = " CREATE TABLE " + " TABLE_RSSI " + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_X + " TEXT NOT NULL, " + COL_Y + " TEXT NOT NULL, " + COL_SSID + " TEXT NOT NULL, " + COL_RSSI + " TEXT NOT NULL);";
public MaBaseSQLite(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_BDD);
Log.i("base créee","base créee");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE" + TABLE_RSSI + ";");
onCreate(db);
}
}
编辑
case R.id.button1:
Grille grille = new Grille(xCoordinate, yCoordinate, ssid, rssi);
//livre.setIsbn(isbn);
//livre.setTitre(titre);
GrillePuissanceBDD liv = new GrillePuissanceBDD(getApplicationContext());
liv.open();
liv.insertGrille(grille);
Log.i("grille***", grille + "");
Log.i("getxCoordinate***", grille.getxCoordinate() + "");
Grille livreFromBdd = liv.getGrilleWithTitre(grille.getxCoordinate());
Log.i("livreFromBdd", livreFromBdd + "");
if (livreFromBdd != null) {
Toast.makeText(this, livreFromBdd.toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Prbleme", Toast.LENGTH_LONG).show();
}
liv.close();
break;
我没有收到错误,这是堆栈跟踪:
04-16 04:47:34.700: I/creation base(9205): creation
04-16 04:47:34.860: I/COL_X, grille.getxCoordinate()(9205): xCoordinate
04-16 04:47:34.880: I/insertion(9205): Ycoordinate=yCoordinate RSSI=ssid Xcoordinate =xCoordinate SSID=rssi
04-16 04:47:34.880: I/insertion(9205): xCoordinate
04-16 04:47:34.990: I/insertion(9205): 29
04-16 04:47:35.020: I/grille***(9205): ID :0
04-16 04:47:35.020: I/grille***(9205): SSID : rssi
04-16 04:47:35.020: I/grille***(9205): X : xCoordinate
04-16 04:47:35.020: I/grille***(9205): Y : yCoordinate
04-16 04:47:35.020: I/grille***(9205): Puissance : ssid
04-16 04:47:35.020: I/getxCoordinate***(9205): xCoordinate
04-16 04:47:35.040: I/Cursor c(9205): android.database.sqlite.SQLiteCursor@41757ca8
04-16 04:47:35.110: I/c.getCount()(9205): 0
04-16 04:47:35.110: I/Cursor(9205): null
04-16 04:47:35.140: I/cursorTest(9205): ID :1
04-16 04:47:35.140: I/cursorTest(9205): SSID :
04-16 04:47:35.140: I/cursorTest(9205): X :
04-16 04:47:35.140: I/cursorTest(9205): Y :
04-16 04:47:35.140: I/cursorTest(9205): Puissance :
04-16 04:47:35.150: I/c.getCount()(9205): 0
04-16 04:47:35.150: I/livreFromBdd(9205): null
我真的不明白你写了什么,但从我读到的来看 代码中的这些行显示
private static final String COL_X = "Xcoordinate ";
private static final String COL_Y = "Ycoordinate ";
删除末尾的空格,因为您在ContentValues
此外,我建议您对方法
open
的访问权限进行更严格的限制(private
),在方法insertgrill
中调用open
,我不太明白您写了什么,但从我读到的内容来看
代码中的这些行显示
private static final String COL_X = "Xcoordinate ";
private static final String COL_Y = "Ycoordinate ";
删除末尾的空格,因为您在ContentValues
此外,我还建议您对方法
open
的访问进行更严格的限制(private
),在方法insertgrill
中调用open
,实际上并且真正知道代码的错误,这就是为什么我尝试给出一个简单的工作示例以适应您的情况:)
这是一个关于如何将数据插入数据库的简单示例:
让我们以DBHelper为例,我对它做了一些更改(我将所有私有属性都设置为公共)
MaBaseSQLite.java
}
然后,让我们创建另一个活动:
MainActivity.java
这是对代码的简单测试:
项目的成功机会:D
如果仍有问题,请告诉我!祝您好运事实上,我确实知道您的代码到底出了什么问题,这就是为什么我尝试给出一个简单的工作示例,以适应您的情况:) 这是一个关于如何将数据插入数据库的简单示例: 让我们以DBHelper为例,我对它做了一些更改(我将所有私有属性都设置为公共) MaBaseSQLite.java } 然后,让我们创建另一个活动: MainActivity.java 这是对代码的简单测试: 项目的成功机会:D
如果仍有问题,请告诉我!祝您好运演示如何创建db(db helper类)。您会得到什么错误?您可以发布堆栈跟踪吗?在数据库中插入数据之前,您必须先打开数据库。Log cat,始终包括Log cat。@Amina I应该更精确,异常堆栈跟踪。它通常是红色的,表示代码中失败的部分。显示如何创建db(db helper类)。您得到的错误是什么?您可以发布堆栈跟踪吗?在数据库中插入数据之前,您必须先打开数据库。Log cat,始终包括Log cat。@Amina I应该更精确,异常堆栈跟踪。它通常是红色的,表示代码中失败的部分。谢谢,但我想从数据库中得到一些东西我得到一个例外:
原因:android.database.sqlite.SQLiteException:没有这样的表:MyDB(代码1):,编译时:select*from MyDB
我添加了这个代码`Cursor cursorTest=db.rawQuery(“select*from”+“MyDB”,null);cursorTest.moveToFirst();int a=cursorTest.getInt(1);Log.i(“a”,a+”);`顺便说一句,merci:)很抱歉让你感到困惑,实际上“MyDB”不是一个表,它是我给你的数据库起的名字,这个表叫做“table_rssi”,所以如果你想做一个select查询,你需要这样做,“select*FROM tablerssi”或者“从”+表中选择*我不选择*从MyDBVoila j'ai Modifieéle code pour qu'il match ton besoin,我在我的电脑上测试过,它似乎工作得很好,你只需删除旧数据库并再次从scrutch开始,或者只需从手机中卸载应用程序并再次安装,Bonne chance,如果有什么不对劲,请告诉我;)谢谢你…你的人生!!我整个上午都在试着设置我的旧代码,但是你的代码很简单,而且很准确:)随时欢迎你,但不要用(VOU)称呼我。我才22岁:p:D谢谢,但我想从数据库中得到一些东西。我得到一个例外:原因:android.database.sqlite.SQLiteException:没有这样的表:MyDB(代码1):,编译时:select*from MyDB
我添加了这个代码`Cursor cursorTest=db.rawQuery(“select*from”+“MyDB”,null);cursorTest.moveToFirst();inta=cursorTest.getInt(1);Log.i(“a”,a+);`顺便说一句,谢谢:)很抱歉让你感到困惑,实际上“MyDB”不是一个表,它是我给你的数据库起的名字,这个表叫做“table_rssi”,所以如果你想做一个select查询,你需要这样做,“select*FROM table_rssi”或“select*FROM”+TABLE_RSSI not select*从MyDBVoila j'ai Modifie le code pour qu'il match ton besoin,我在我的电脑上进行了测试,它似乎工作得很好,你只需删除旧数据库并再次从scrutch开始,或者从手机上卸载应用程序并再次安装,Bonne chance,如果有什么不对劲,请告诉我;)谢谢你…你的人生!!我整个上午都在试着设置我的旧代码,但是你的代码很简单,而且很准确:)随时欢迎你,但永远不要跟我说话(VOU)我才22岁:p:D谢谢:)我试着删除Blacks,但仍然是同一个问题。谢谢:)我试着删除Blacks,但仍然是同一个问题。
public class MainActivity extends Activity {
MaBaseSQLite dbHelper;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//intialisation de DBHelper
dbHelper = new MaBaseSQLite(this, "MyDB", null, 1);
//insertion des donnees
insertGrille("12", "56", "rssi1", "ssid1");
insertGrille("16", "14", "rssi2", "ssid2");
insertGrille("10", "13", "rssi3", "ssid3");
//recuperation des donnees
getGrilles();
}
public void insertGrille(String x, String y, String rssi, String ssid){
//get Writable DB
SQLiteDatabase db = dbHelper.getWritableDatabase();
//Insert Data
ContentValues values = new ContentValues();
values.put(MaBaseSQLite.COL_X, x);
values.put(MaBaseSQLite.COL_Y, y);
values.put(MaBaseSQLite.COL_RSSI, rssi);
values.put(MaBaseSQLite.COL_SSID, ssid);
db.insert(MaBaseSQLite.TABLE_RSSI, null, values);
Log.i("MyTag", "data inserted");
}
public void getGrilles() {
//requete de recuperation
String selectQuery = "SELECT * FROM " + MaBaseSQLite.TABLE_RSSI;
//get Readable DB
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows
if (cursor.moveToFirst()) {
do {
//pour le moment je fais rien d'interessant avec ces donnees :)
Log.i("MyTag", "grille.x= " + cursor.getString(1));
Log.i("MyTag", "grille.y= " + cursor.getString(2));
Log.i("MyTag", "grille.rssi= " + cursor.getString(3));
Log.i("MyTag", "grille.ssid= " + cursor.getString(4));
} while (cursor.moveToNext());
}
}
}