db.execSQL("CREATE TABLE table1 (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);"); // 创建第二个数据表 db.execSQL("CREATE TABLE table2 (id INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, phone TEXT);");是什么意思
时间: 2023-05-25 21:06:23 浏览: 131
这段代码使用SQL语句在数据库中创建了两个数据表:table1和table2。table1包含id、name、age三个字段,其中id为主键且自动递增;table2包含id、address、phone三个字段,其中id为主键且自动递增。创建好的数据表将会在数据库中保存。
相关问题
简单叙述数据库调用的执行流程,并使用代码描述(10分) 1、数据库(test.db)创建过程; 2、Person表创建过程,字段包括:id(整型,自增,主键),name(64个字符),age(整型),gender(布尔型),height(浮点型); 3、插入一条记录并查询记录代码。
数据库调用的执行流程通常包括以下几个步骤:
1. 创建或打开数据库:通过SQLiteOpenHelper或SQLiteDatabase类创建或打开数据库。
2. 创建数据表:通过SQLiteDatabase类的execSQL()方法执行CREATE TABLE语句创建数据表。
3. 插入数据:通过SQLiteDatabase类的insert()方法插入数据。
4. 查询数据:通过SQLiteDatabase类的query()方法查询数据。
下面是一个简单的示例代码,演示了如何创建数据库和表,以及插入和查询数据:
```java
// 创建或打开数据库
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(context.getDatabasePath("test.db"), null);
// 创建Person表
String createTable = "CREATE TABLE IF NOT EXISTS Person ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "age INTEGER,"
+ "gender INTEGER,"
+ "height REAL"
+ ")";
db.execSQL(createTable);
// 插入一条记录
ContentValues values = new ContentValues();
values.put("name", "张三");
values.put("age", 20);
values.put("gender", 1);
values.put("height", 1.80);
db.insert("Person", null, values);
// 查询记录
Cursor cursor = db.query("Person", null, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
int gender = cursor.getInt(cursor.getColumnIndex("gender"));
float height = cursor.getFloat(cursor.getColumnIndex("height"));
Log.d(TAG, "id: " + id + ", name: " + name + ", age: " + age + ", gender: " + gender + ", height: " + height);
}
// 关闭数据库
cursor.close();
db.close();
```
上述代码中,首先通过SQLiteDatabase.openOrCreateDatabase()方法创建或打开数据库,并通过execSQL()方法执行CREATE TABLE语句创建Person表。然后通过ContentValues对象插入一条记录,最后通过query()方法查询记录,并通过Cursor对象遍历结果集获取数据。最后,关闭数据库和Cursor对象释放资源。
移动应用开发:建立数据库“dbTest.db”以及“tb_person”,包含字段:id name age gender height 要求实现对学生以上信息的增删改查,写出相应的xml和activity文件
好的,我可以为您提供一个简单的实现方案。以下是步骤和代码示例:
1. 创建数据库和表
在 Android Studio 中创建一个新项目。然后在项目的 `app/src/main/` 目录下创建一个 `assets/` 文件夹,并在此文件夹下创建一个名为 `dbTest.db` 的 SQLite 数据库文件。在该数据库中创建一个名为 `tb_person` 的表,包含 `id`、`name`、`age`、`gender` 和 `height` 这五个字段。
2. 编写数据库操作类
创建一个名为 `DatabaseHelper` 的类,用于连接数据库和进行增删改查操作。以下是该类的代码示例:
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "dbTest.db";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "tb_person";
private static final String ID = "id";
private static final String NAME = "name";
private static final String AGE = "age";
private static final String GENDER = "gender";
private static final String HEIGHT = "height";
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + " ("
+ ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ NAME + " TEXT, "
+ AGE + " INTEGER, "
+ GENDER + " TEXT, "
+ HEIGHT + " REAL)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
public void insert(Person person) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(NAME, person.getName());
values.put(AGE, person.getAge());
values.put(GENDER, person.getGender());
values.put(HEIGHT, person.getHeight());
db.insert(TABLE_NAME, null, values);
db.close();
}
public void update(Person person) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(NAME, person.getName());
values.put(AGE, person.getAge());
values.put(GENDER, person.getGender());
values.put(HEIGHT, person.getHeight());
String whereClause = ID + "=?";
String[] whereArgs = {String.valueOf(person.getId())};
db.update(TABLE_NAME, values, whereClause, whereArgs);
db.close();
}
public void delete(int id) {
SQLiteDatabase db = this.getWritableDatabase();
String whereClause = ID + "=?";
String[] whereArgs = {String.valueOf(id)};
db.delete(TABLE_NAME, whereClause, whereArgs);
db.close();
}
public List<Person> queryAll() {
SQLiteDatabase db = this.getReadableDatabase();
List<Person> list = new ArrayList<>();
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(ID));
String name = cursor.getString(cursor.getColumnIndex(NAME));
int age = cursor.getInt(cursor.getColumnIndex(AGE));
String gender = cursor.getString(cursor.getColumnIndex(GENDER));
float height = cursor.getFloat(cursor.getColumnIndex(HEIGHT));
Person person = new Person(id, name, age, gender, height);
list.add(person);
}
cursor.close();
db.close();
return list;
}
}
```
在该类中,我们继承了 `SQLiteOpenHelper` 类,并实现了 `onCreate`、`onUpgrade` 方法用于创建数据库和升级数据库。同时,我们还实现了 `insert`、`update`、`delete` 和 `queryAll` 方法用于增删改查操作。
3. 编写实体类
创建一个名为 `Person` 的类,用于表示一个学生的信息。该类包含 `id`、`name`、`age`、`gender` 和 `height` 这五个属性,并且编写相应的 getter 和 setter 方法。以下是该类的代码示例:
```java
public class Person {
private int id;
private String name;
private int age;
private String gender;
private float height;
public Person() {
}
public Person(int id, String name, int age, String gender, float height) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.height = height;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
}
```
4. 编写布局文件和 Activity 类
在 `activity_main.xml` 文件中,创建一个界面,包括输入框和按钮,用于实现对数据库的增删改查操作。以下是该界面的代码示例:
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<EditText
android:id="@+id/edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"/>
<EditText
android:id="@+id/edit_age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Age"/>
<EditText
android:id="@+id/edit_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Gender"/>
<EditText
android:id="@+id/edit_height"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Height"/>
<Button
android:id="@+id/btn_insert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Insert"/>
<Button
android:id="@+id/btn_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update"/>
<Button
android:id="@+id/btn_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Delete"/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
```
在 `MainActivity.java` 文件中,我们首先获取界面上的输入框和按钮,并为按钮设置点击事件。当点击按钮时,我们调用相应的 CRUD 操作方法,并将结果展示在界面上。以下是该类的代码示例:
```java
public class MainActivity extends AppCompatActivity {
private EditText mEditName;
private EditText mEditAge;
private EditText mEditGender;
private EditText mEditHeight;
private Button mBtnInsert;
private Button mBtnUpdate;
private Button mBtnDelete;
private ListView mListView;
private ArrayAdapter<Person> mAdapter;
private List<Person> mList;
private DatabaseHelper mDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditName = findViewById(R.id.edit_name);
mEditAge = findViewById(R.id.edit_age);
mEditGender = findViewById(R.id.edit_gender);
mEditHeight = findViewById(R.id.edit_height);
mBtnInsert = findViewById(R.id.btn_insert);
mBtnUpdate = findViewById(R.id.btn_update);
mBtnDelete = findViewById(R.id.btn_delete);
mListView = findViewById(R.id.list_view);
mDatabaseHelper = new DatabaseHelper(this);
mList = mDatabaseHelper.queryAll();
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mList);
mListView.setAdapter(mAdapter);
mBtnInsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mEditName.getText().toString();
int age = Integer.parseInt(mEditAge.getText().toString());
String gender = mEditGender.getText().toString();
float height = Float.parseFloat(mEditHeight.getText().toString());
Person person = new Person(0, name, age, gender, height);
mDatabaseHelper.insert(person);
mList.clear();
mList.addAll(mDatabaseHelper.queryAll());
mAdapter.notifyDataSetChanged();
}
});
mBtnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mEditName.getText().toString();
int age = Integer.parseInt(mEditAge.getText().toString());
String gender = mEditGender.getText().toString();
float height = Float.parseFloat(mEditHeight.getText().toString());
Person person = new Person(mList.get(mListView.getCheckedItemPosition()).getId(), name, age, gender, height);
mDatabaseHelper.update(person);
mList.clear();
mList.addAll(mDatabaseHelper.queryAll());
mAdapter.notifyDataSetChanged();
}
});
mBtnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = mList.get(mListView.getCheckedItemPosition()).getId();
mDatabaseHelper.delete(id);
mList.clear();
mList.addAll(mDatabaseHelper.queryAll());
mAdapter.notifyDataSetChanged();
}
});
}
}
```
在该类中,我们首先获取界面上的输入框和按钮,并为按钮设置点击事件。当点击按钮时,我们调用相应的 CRUD 操作方法,并将结果展示在界面上。其中,我们使用了一个 `ListView` 来展示学生的信息列表。
需要注意的是,我们查询数据库和更新界面的操作都是在子线程中进行的,以避免出现 ANR 的情况。
以上就是一个简单的增删改查示例,希望能够帮助您完成此项目。
阅读全文