![](/img/trans.png)
[英]How can I use Android exported SQLite database in Java application
[英]How can I use SQLite in android application?
如何確保創建了表,以及如何在android中找到數據庫? 我運行了這段代碼,但它僅在我的表中存儲一條記錄。 如何解決這個問題? 我創建了兩個類
頭等艙:
public class dataAccess {
private SQLiteDatabase database;
private sqliteHelper dbHelper;
public dataAccess(Context context)
{
dbHelper = new sqliteHelper(context);
}
public void open() throws SQLException
{
database = dbHelper.getWritableDatabase();
}
public void close()
{
dbHelper.close();
}
public void createDoctorInfo(String FirstName ,String LastName)
{
ContentValues values = new ContentValues();
values.put(sqliteHelper.FirstName, FirstName);
values.put(sqliteHelper.LastName, LastName);
database.insert(sqliteHelper.TABLE_DoctorInfo, null, values);
}
}
第二類:
public class sqliteHelper extends SQLiteOpenHelper
{
public static final String TABLE_DoctorInfo = "DoctorInfo";
public static final String DoctorId = "_id";
public static final String FirstName = "FirstName";
public static final String LastName = "LastName";
private static final String DATABASE_NAME = "Medical.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
private static final String DATABASE_CREATE = " CREATE TABLE "
+ TABLE_DoctorInfo + "("+DoctorId + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ FirstName + " TEXT NOT NULL ," +LastName +" TEXT NOT NULL);" ;
public sqliteHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database)
{
database.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2)
{
}
主要活動:
public class MainActivity extends Activity {
EditText fname,lname;
Button confirm,view;
dataAccess da=new dataAccess(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
da.open();
fname=(EditText)findViewById(R.id.fname);
lname=(EditText)findViewById(R.id.lname);
confirm=(Button)findViewById(R.id.confirm);
view=(Button)findViewById(R.id.view);
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
saveDoctorInfo();
}
});
}
@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;
}
public void saveDoctorInfo(){
String fn=fname.getText().toString();
String ln=lname.getText().toString();
//save Info into DB
da.createDoctorInfo(fn,ln);
//close Conection
da.close();
Toast.makeText(getBaseContext(), "Data Has been saved successfully", Toast.LENGTH_LONG).show();
}
}
這是我的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/fnamet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="41dp"
android:layout_marginTop="35dp"
android:text="@string/first_name" />
<EditText
android:id="@+id/fname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/fnamet"
android:layout_marginLeft="36dp"
android:layout_marginTop="16dp"
android:ems="10"
android:inputType="textPersonName" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/lnamet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/fname"
android:layout_below="@+id/fname"
android:layout_marginTop="30dp"
android:text="@string/last_name" />
<Button
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/lnamet"
android:layout_below="@+id/lname"
android:layout_marginLeft="24dp"
android:layout_marginTop="50dp"
android:text="@string/confirm" />
<Button
android:id="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/confirm"
android:layout_below="@+id/confirm"
android:layout_marginTop="36dp"
android:text="@string/view" />
<EditText
android:id="@+id/lname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/lnamet"
android:layout_below="@+id/lnamet"
android:layout_marginTop="18dp"
android:ems="10"
android:inputType="textPersonName" />
</RelativeLayout>
如何確保創建我的表
通過使用方便的開放式助手。 它可以幫助您打開與完全初始化的數據庫( getWritableDatabase
)的連接。 這包括從頭開始創建數據庫,並在需要時升級數據庫模式。 您唯一需要做的就是指定要在onCreate
或onUpgrade
運行的SQL命令。
我在哪里可以找到我在android中的數據庫
您無需關心確切的路徑。 它在您的應用程序私有數據目錄中。 DATABASE_NAME = "Medical.db"
-在典型設備上-將導致
/data/data/your.package.name/databases/Medical.db
。
它只在我的表中存儲一條記錄如何解決此類問題
更改onCreate
部分。 但是請注意,一旦創建了數據庫,打開的幫助程序將不會嘗試重新創建它。 您要么需要擦除應用程序數據,要么需要告訴Open Helper版本已更改。 然后它將調用onUpgrade
,您可以使用它刪除舊表定義/更改它們/ ...
嘗試參考該問題的答案,這對創建數據庫和插入值有很大幫助。 鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.