gpt4 book ai didi

java - 创建数据库时将数据添加到sqlite数据库

转载 作者:行者123 更新时间:2023-12-02 05:45:35 25 4
gpt4 key购买 nike

我是 sqlite 数据库的新手,在我的项目中,我需要在创建数据库后添加数据。我尝试过这种方式,这是我的代码。

公共(public)类 MainActivity 扩展 Activity {

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

MySqlHelper helper = new MySqlHelper(this);
v.setText(helper.getBird(2));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

我创建了另一个类来打开 sqlite 数据库。

公共(public)类 MySqlHelper 扩展了 SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "BirdDB";
private static final String TABLE_BIRDS = "birds";

private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";

private static final String[] COLUMNS = {KEY_ID,KEY_NAME};

public MySqlHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_TABLE = "CREATE TABLE birds ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT )";
db.execSQL(CREATE_TABLE);
db.close();

SQLiteDatabase dbase = this.getWritableDatabase();
dbase.insert(TABLE_BIRDS, null, addBirdData("Sri Lanka Jungle Flowl"));
dbase.insert(TABLE_BIRDS, null, addBirdData("Red Faced Mal Koha"));
dbase.close();
}

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS birds");
this.onCreate(db);
}


public ContentValues addBirdData(String birdName){

ContentValues values = new ContentValues();
values.put(KEY_NAME, birdName);
return values;
}

公共(public)字符串 getBird(int id){

    SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor =
db.query(TABLE_BIRDS, // a. table
COLUMNS, // b. column names
" id = ?", // c. selections
new String[] { String.valueOf(id) }, // d. selections args
null, // e. group by
null, // f. having
null, // g. order by
null); // h. limit

if (cursor != null)
cursor.moveToFirst();


String name = cursor.getString(1);
db.close();

return name;
}

它给了我java.lang.IllegalStateException:(conn# 0)已经关闭异常

帮助我避免这种情况并实现在创建数据库后立即插入数据。

最佳答案

在数据库助手onCreate()中,您无法调用getWritableDatabase()。相反,对作为参数传递给方法的 db 执行插入。不要对其调用close()

修改数据库助手 onCreate() 后,卸载您的应用,以便删除旧数据库文件并运行 onCreate() 中的代码。

关于java - 创建数据库时将数据添加到sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com