下面是我的代码我只想将我在sqlite数据库中插入的数据显示到文本视图但是我有这个错误说id不是唯一的。
package com.example.sqlitetest;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class Main extends Activity {
TextView scrName, fName;
Button go;
SQLiteDatabase db;
String screenName, fullName;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
db = openOrCreateDatabase("MyDataBase", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE if not exists MyTable(ScreenName Varchar, FullName Varchar, id int(3) PRIMARY KEY);");
db.execSQL("Insert into MyTable VALUES('joff', 'tiquez', 1);");
cursor = db.rawQuery("Select * from MyTable", null);
cursor.moveToFirst();
scrName = (TextView) findViewById(R.id.scrName);
fName = (TextView) findViewById(R.id.fName);
while(cursor.isAfterLast() == false){
//retrieving the data from sqlite (im not sure if im doing it right)
String screenname = cursor.getString(cursor.getColumnIndex("ScreenName"));
String fullname = cursor.getString(cursor.getColumnIndex("FullName"));
//this are the textview
scrName.setText(screenname);
fName.setText(fullname);
cursor.moveToNext();
}
db.close();
}
}
这是我的整个java代码。谢谢:))
答案 0 :(得分:3)
嗯,我认为这个项目第一次运行时工作正常。当您第二次运行它时会出错,因为id
是您的primary key
,而ID为1的行已经插入到您的数据库中。
要消除错误:
1) uninstall the app and run it again
2) Don't make id as primary key
3) Catch the exception and handle it yourself
答案 1 :(得分:1)
我可能会建议替代方案。你可以做的是同时制作id列autoincrement
,同时仍将该列保持为primary key
修改: - 强> 我还有其他一些建议: -
db.execSQL("Insert into MyTable VALUES('joff', 'tiquez', 1);");
您可以改为使用ContentValues
while(cursor.isAfterLast() == false){
可以替换为while(!cursor.isAfterLast()){
。这样看起来更干净。
或者您可以使用while(cursor.isAfterLast() == false){
直接替换while(cursor.moveToNext()){
,并可以从while块中删除cursor.moveToNext();
。
快乐编码!!!