在Android中用SQLite创建数据库时出现问题
嗨,我是android新手,在创建数据库时遇到了一个问题在Android中用SQLite创建数据库时出现问题,android,Android,嗨,我是android新手,在创建数据库时遇到了一个问题 public class database extends ListActivity { /** Called when the activity is first created. */ private final String MY_DATABASE_NAME = "myCoolUserDB.db"; private final String MY_DATABASE_TABLE = "t_Users";
public class database extends ListActivity {
/** Called when the activity is first created. */
private final String MY_DATABASE_NAME = "myCoolUserDB.db";
private final String MY_DATABASE_TABLE = "t_Users";
Context c;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> results = new ArrayList<String>();
setContentView(R.layout.main);
SQLiteDatabase mydb=null;
try
{
mydb.openOrCreateDatabase(MY_DATABASE_NAME, null);
} catch(Exception e){}
}
}
公共类数据库扩展了ListActivity{
/**在首次创建活动时调用*/
私有最终字符串MY\u DATABASE\u NAME=“mycoluserdb.db”;
私有最终字符串MY\u DATABASE\u TABLE=“t\u Users”;
上下文c;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ArrayList结果=新建ArrayList();
setContentView(R.layout.main);
SQLiteDatabase mydb=null;
尝试
{
mydb.openOrCreateDatabase(我的数据库名称,null);
}捕获(例外e){}
}
}
当我运行这段代码时,它会抛出一个运行时异常。请帮助我。要使用sqlite数据库,您需要创建从SQLiteOpenHelper扩展的类:
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(UPGRADE_TABLES);
}
}
然后,您可以使用DbHelper对象访问数据库:
DBHelper dbHelper = new DBHelper(Activity.this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
要使用sqlite数据库,您需要创建从SQLiteOpenHelper扩展的类:
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(UPGRADE_TABLES);
}
}
然后,您可以使用DbHelper对象访问数据库:
DBHelper dbHelper = new DBHelper(Activity.this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
这是一篇简单的文章,告诉你这些链接向你展示的更多信息。这是一篇简单的文章,告诉你这些链接向你展示的更多信息。我遇到了同样的问题。它发现在开发过程中发生了两个bug
- 目录“数据库”不存在
- 意外地将“.db”创建为目录。
File dbFile = getDatabasePath ("abc.db");
if (dbFile.isDirectory ()) {
dbFile.delete();
}
if (! dbFile.exists()) {
String path = dbFile.getParent ();
new File (path).mkdirs ();
}
database = SQLiteDatabase.openDatabase (dbFile.getAbsolutePath (), this, SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.CREATE_IF_NECESSARY);
希望这有帮助
我认为SQLiteOpenHelper只对“单表”数据库有用。对于多表应用程序,我认为直接使用SQLeDATABASE更适合于一个好的架构。
我遇到了同样的问题。它发现在开发过程中发生了两个bug
- 目录“数据库”不存在
- 意外地将“.db”创建为目录。
File dbFile = getDatabasePath ("abc.db");
if (dbFile.isDirectory ()) {
dbFile.delete();
}
if (! dbFile.exists()) {
String path = dbFile.getParent ();
new File (path).mkdirs ();
}
database = SQLiteDatabase.openDatabase (dbFile.getAbsolutePath (), this, SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.CREATE_IF_NECESSARY);
希望这有帮助
我认为SQLiteOpenHelper只对“单表”数据库有用。对于多个表应用程序,我认为直接使用SQLeDATabaseFIT更好地构建一个好的架构。您的第一步应该是打印异常的堆栈跟踪,而不是完全忽略它。另外,请修改你文章的格式。你的第一步应该是打印异常的堆栈跟踪,而不是完全忽略它。另外,请修复数据存储上post.android开发者页面的格式:数据存储上的android开发者页面: