gpt4 book ai didi

java - 如何在 Android 应用程序中使用 SQLite?

转载 作者:行者123 更新时间:2023-12-01 13:46:49 26 4
gpt4 key购买 nike

如何确保我的表已创建以及在 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)
{


}

主要 Activity :

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>

最佳答案

how can ensure that my tables are created

通过使用方便的打开助手。它可以帮助您打开与完全初始化的数据库的连接 (getWritableDatabase)。这包括从头开始创建数据库以及根据需要升级数据库架构。您唯一需要做的就是指定在 onCreateonUpgrade 中需要运行哪些 SQL 命令。

where can i find my database in android

您不需要关心确切的路径。它位于您的应用程序私有(private)数据目录中。DATABASE_NAME = "Medical.db" 将 - 在典型设备上 - 导致
/data/data/your.package.name/databases/Medical.db

it stores only one record in my tables how can solve such problem

更改onCreate部分。但请注意,一旦创建了数据库,打开助手将不会尝试重新创建它。您要么需要删除应用程序数据,要么需要告诉开放助手版本已更改。然后它会调用onUpgrade,您可以使用它来删除旧的表定义/更改它们/...

关于java - 如何在 Android 应用程序中使用 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com