如何确保创建表格以及在哪里可以在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>
答案 0 :(得分:1)
如何确保创建我的表
使用方便的打开助手。它可以帮助您打开与完全初始化的数据库(getWritableDatabase
)的连接。这包括从头开始创建数据库并在需要时升级数据库模式。您唯一需要做的就是在onCreate
或onUpgrade
中指定需要运行的SQL命令。
我在哪里可以在android中找到我的数据库
您不应该关心确切的路径。它位于您的应用私有数据目录中。
DATABASE_NAME = "Medical.db"
会在典型的设备上产生结果
/data/data/your.package.name/databases/Medical.db
。
它只在我的表中存储一条记录如何解决这样的问题
更改onCreate
部分。但请注意,一旦创建了数据库,open helper将不会尝试重新创建它。您需要擦除应用程序数据或需要告诉打开帮助程序版本已更改。然后它将调用onUpgrade
,您可以使用它来删除旧表定义/更改它们/ ...
答案 1 :(得分:0)
尝试在这个问题中引用答案,这对创建数据库和插入值有很大帮助。 LINK