gpt4 book ai didi

android - 如何从在sqllite中创建和导出的 Assets 文件夹android中放置数据库和读取数据库

转载 作者:太空狗 更新时间:2023-10-29 15:34:49 25 4
gpt4 key购买 nike

我是 Android 开发新手。我正在通过 SQLite Manager 0.8.1 创建一个数据库。用户表包含两个字段,用户名和密码。我创建了数据库文件并将其放在 assets 文件夹中。现在我正在尝试从 Assets 文件夹中读取数据库。最好的方法是什么?任何帮助将不胜感激。

最佳答案

public class DataBaseHelper extends SQLiteOpenHelper {
private SQLiteDatabase myDataBase;
private final Context myContext;
private static final String DATABASE_NAME = "YOURDBNAME";
public final static String DATABASE_PATH = "/data/data/com.your.packagename/databases/";
public static final int DATABASE_VERSION = 1;
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;

}




//Create a empty database on the system
public void createDatabase() throws IOException
{

boolean dbExist = checkDataBase();

if(dbExist)
{
Log.v("DB Exists", "db exists");
// By calling this method here onUpgrade will be called on a
// writeable database, but only if the version number has been
// bumped
//onUpgrade(myDataBase, DATABASE_VERSION_old, DATABASE_VERSION);
}

boolean dbExist1 = checkDataBase();
if(!dbExist1)
{
this.getReadableDatabase();
try
{
this.close();
copyDataBase();
}
catch (IOException e)
{
throw new Error("Error copying database");
}
}

}
//Check database already exist or not
private boolean checkDataBase()
{
boolean checkDB = false;
try
{
String myPath = DATABASE_PATH + DATABASE_NAME;
File dbfile = new File(myPath);
checkDB = dbfile.exists();
}
catch(SQLiteException e)
{
}
return checkDB;
}
//Copies your database from your local assets-folder to the just created empty database in the system folder
private void copyDataBase() throws IOException
{

InputStream mInput = myContext.getAssets().open(DATABASE_NAME);
String outFileName = DATABASE_PATH + DATABASE_NAME;
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[2024];
int mLength;
while ((mLength = mInput.read(mBuffer)) > 0) {
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
}
//delete database
public void db_delete()
{
File file = new File(DATABASE_PATH + DATABASE_NAME);
if(file.exists())
{
file.delete();
System.out.println("delete database file.");
}
}
//Open database
public void openDatabase() throws SQLException
{
String myPath = DATABASE_PATH + DATABASE_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}

public synchronized void closeDataBase()throws SQLException
{
if(myDataBase != null)
myDataBase.close();
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion)
{
Log.v("Database Upgrade", "Database version higher than old.");
db_delete();
}

}

}

并实现它

DataBaseHelper dbhelper = new DataBaseHelper(getApplicationContext());

db = dbhelper.getWritableDatabase();

为此:

Cursor cur;
cur_Herbs = db.rawQuery("select * from TABLENAME where name like '"
+ edit_text_name.gettext.tostring() + "'", null);

if (cur.moveToFirst()) {
do {
int name = cur.getColumnIndex("name");
int pwd= cur.getColumnIndex("pwd");
str_name = cur.getString(name).toString();
str_pwd= cur.getString(ped).toString();
if(str_name.equals(edittext_uname.gettext.tostring()and str_pwd.equals(edittext_pwd.gettext.tostring()))
{

//code for if loginn
}
} while (cur_Herbs.moveToNext());


}

关于android - 如何从在sqllite中创建和导出的 Assets 文件夹android中放置数据库和读取数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22627215/

25 4 0
文章推荐: c - 如何从 POSIX 二叉树(tsearch)中删除所有节点?
文章推荐: html - 为什么有人想要将表单元素包装在
文章推荐: c - 死 C 变量
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com