存储在sd卡中的Android数据
我已经创建了数据库,它存储在sd卡中。但似乎发生了什么事。 下面是创建数据库的代码存储在sd卡中的Android数据,android,android-sqlite,android-sdcard,Android,Android Sqlite,Android Sdcard,我已经创建了数据库,它存储在sd卡中。但似乎发生了什么事。 下面是创建数据库的代码 public void createDatabase(){ String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/smsgarbage.db"; sqlite = openOrCreateDatabase(path, MODE_PRIVATE, null); try { St
public void createDatabase(){
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/smsgarbage.db";
sqlite = openOrCreateDatabase(path, MODE_PRIVATE, null);
try {
String query = "CREATE TABLE tblGarbage(id text PRIMARY KEY, prefixNum text)";
sqlite.execSQL(query);
Toast.makeText(MainActivity.this, "Oncreate dabase was created", Toast.LENGTH_LONG).show();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在清单文件中,我已填写:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
有人谁是关于这个问题的大师,请花时间再次检查,以支持我。非常感谢。您好,如果您想通过SD卡创建数据库,请参阅下面的方法。如果您有任何疑问,请告诉我,如果您在任何时候都没有收到我的信息 第一步。扩展
SQLiteOpenHelper
将数据库名称替换为完整的sd卡路径。这将在定义位置上创建数据库
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import com.adb.test.sql.DAO.FoodMarchantDAO;
public class SQLite extends SQLiteOpenHelper {
public static int DATABASE_VERSION = 1;
public static String DATABASE_NAME = "smsgarbage.db";
private static final String DATABASE_PATH_NAME = getDBAbsolutePath();
/**
* Create a helper object to create, open, and/or manage a database. This method always returns very quickly.
* The database is not actually created or opened until one of getWritableDatabase()
* or getReadableDatabase() is called.
* @param context
* @param name
* @param factory
* @param version
*/
public SQLite(Context context)
{
super(context, DATABASE_PATH_NAME, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
// when we call SQLiteDatabase getWritableDatabase() this would called
// In fist time application install if no database then it would called once but that time Application
// database might be null we have to used here db
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
}
private static String getDBAbsolutePath() {
return new StringBuilder().append(appHomeDirectory()).append(DATABASE_NAME).toString();
}
public static String appHomeDirectory() {
return new StringBuilder().append(getExternalStoragePath()).append("foodbazer").append("/").toString();
}
}
第二步。在应用程序级别,如何访问SQLite帮助类,请参见以下内容
import com.adb.test.sql.data.SQLite;
import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
public class FoodBazerApplication extends Application{
private static FoodBazerApplication mFoodBazerApplication;
public SQLiteDatabase mAppLevelDB;
public static FoodBazerApplication getInstance()
{
return mFoodBazerApplication;
}
@Override
public void onCreate() {
super.onCreate();
mFoodBazerApplication = this;
SQLite tmpSQL= new SQLite(getApplicationContext());
// it return null if first time database create onCreate() called,
// once database create it will open the database so openDataBase() called
mAppLevelDB = tmpSQL.getWritableDatabase();
}
}
发生了错误
。。。发布错误日志。那么就只能找到问题了。出了什么问题?