结对作业6
PSP0(Personal Software Process Stages ) | 所需时间(TIME) |
Planning(计划) | 今天把安卓端的数据库又搞了搞 |
estimate[估计这个任务需要多少时间 ] | 2h |
Development (开发 ) | |
· Design [具体设计 ] | 1 |
· Coding [具体编码 ] | 2 |
· Test [测试(自我测试,修改代码,提交修改)] | 2 |
Reporting(报告 ) | |
· Postmortem & Process Improvement Plan [事后总结, 并提出过程改进计划 ] | 1h |
合计 | 8h |
安卓数据库的操作:今天主要学了下安卓数据库方面的简单知识。数据库主要用于复杂的数据储存。
安卓数据库简介:安卓SQLite数据库是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很 少,通常只需要几百KB的内存就足够了。SQLite不仅支持标 准的SQL语法,还遵循了数据库的ACID事务,所以只要你以前使用过其他的关系型数据库,就 可以很快地上手SQLite。而SQLite又比一般的数据库要简单得多,它甚至不用设置用户名和密码 就可以使用。
数据库的创建:Android为了让我们能够更加方便地管理数据库,专门提供了一个SQLiteOpenHelper帮助类,借 助这个类就可以非常简单地对数据库进行创建和升级。
新建一个Java类继承SQLiteOpenHelper类,在主活动中调用该类即可实现对数据库的创建。
~~~
public class MyDatabaseHelper extends SQLiteOpenHelper {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> final String CREATE_BOOK = <span style="color: #800000;">"</span><span style="color: #800000;">create table book ( </span><span style="color: #800000;">"</span> +
<span style="color: #800000;">"</span><span style="color: #800000;">id integer primary key autoincrement,</span><span style="color: #800000;">"</span> +
<span style="color: #800000;">"</span><span style="color: #800000;">author text,</span><span style="color: #800000;">"</span> +
<span style="color: #800000;">"</span><span style="color: #800000;">price real,</span><span style="color: #800000;">"</span> +
<span style="color: #800000;">"</span><span style="color: #800000;">pages integer,</span><span style="color: #800000;">"</span> +
<span style="color: #800000;">"</span><span style="color: #800000;">name text )</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Context mContext;
</span><span style="color: #0000ff;">public</span> MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, <span style="color: #0000ff;">int</span><span style="color: #000000;"> version) {
super(context, name, factory, version);
mContext </span>=<span style="color: #000000;"> context;
}
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
Toast.makeText(mContext, </span><span style="color: #800000;">"</span><span style="color: #800000;">数据库成功创建</span><span style="color: #800000;">"</span><span style="color: #000000;">, Toast.LENGTH_SHORT).show();
}
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> onUpgrade(SQLiteDatabase db, <span style="color: #0000ff;">int</span> oldVersion, <span style="color: #0000ff;">int</span><span style="color: #000000;"> newVersion) {
}
}
~~~
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> NormalActivity extends AppCompatActivity {
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> MyDatabaseHelper dbHelper;
@Override
</span><span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.normal_layout);
dbHelper </span>= <span style="color: #0000ff;">new</span> MyDatabaseHelper(<span style="color: #0000ff;">this</span>, <span style="color: #800000;">"</span><span style="color: #800000;">BookStore.db</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">null</span>, <span style="color: #800080;">1</span><span style="color: #000000;">);
Button bt3 </span>=<span style="color: #000000;"> findViewById(R.id.create_database);
bt3.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) {
dbHelper.getWritableDatabase();
}
});
}
}
</span>~~~<span style="color: #000000;">
如果想建立多个数据库,由于就需要对数据库进行更新升级,这里建立两个数据库,重写onUpgrade() 方 法。
```
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> onUpgrade(SQLiteDatabase db, <span style="color: #0000ff;">int</span> oldVersion, <span style="color: #0000ff;">int</span><span style="color: #000000;"> newVersion) {
db.execSQL(</span><span style="color: #800000;">"</span><span style="color: #800000;">drop table if exists Book</span><span style="color: #800000;">"</span><span style="color: #000000;">);
db.execSQL(</span><span style="color: #800000;">"</span><span style="color: #800000;">drop table if exists Category</span><span style="color: #800000;">"</span><span style="color: #000000;">);
onCreate(db);
}
```
数据库的增改删查
</span>~~~<span style="color: #000000;">
add.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) {
SQLiteDatabase db </span>=<span style="color: #000000;"> dbHelper.getWritableDatabase();
ContentValues values </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ContentValues();
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">暴走大漫画</span><span style="color: #800000;">"</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">author</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">张子豪</span><span style="color: #800000;">"</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">pages</span><span style="color: #800000;">"</span>, <span style="color: #800080;">514</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">price</span><span style="color: #800000;">"</span>, <span style="color: #800080;">18.9</span><span style="color: #000000;">);
db.insert(</span><span style="color: #800000;">"</span><span style="color: #800000;">Book</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">null</span><span style="color: #000000;">, values);
values.clear();
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">金刚大力手</span><span style="color: #800000;">"</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">author</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">王子顺</span><span style="color: #800000;">"</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">pages</span><span style="color: #800000;">"</span>, <span style="color: #800080;">60</span><span style="color: #000000;">);
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">price</span><span style="color: #800000;">"</span>, <span style="color: #800080;">5</span><span style="color: #000000;">);
db.insert(</span><span style="color: #800000;">"</span><span style="color: #800000;">Book</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">null</span><span style="color: #000000;">, values);
Toast.makeText(NormalActivity.</span><span style="color: #0000ff;">this</span>, <span style="color: #800000;">"</span><span style="color: #800000;">添加数据成功</span><span style="color: #800000;">"</span><span style="color: #000000;">, Toast.LENGTH_SHORT).show();
}
});
</span>~~~
~~~<span style="color: #000000;">
update.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) {
SQLiteDatabase db </span>=<span style="color: #000000;"> dbHelper.getWritableDatabase();
ContentValues values </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ContentValues();
values.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">price</span><span style="color: #800000;">"</span>, <span style="color: #800080;">10</span><span style="color: #000000;">);
db.update(</span><span style="color: #800000;">"</span><span style="color: #800000;">Book</span><span style="color: #800000;">"</span>, values, <span style="color: #800000;">"</span><span style="color: #800000;">name=?</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">new</span> String[]{<span style="color: #800000;">"</span><span style="color: #800000;">暴走大漫画</span><span style="color: #800000;">"</span><span style="color: #000000;">});
}
});
</span>~~~
~~~<span style="color: #000000;">
delete.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) {
SQLiteDatabase db</span>=<span style="color: #000000;">dbHelper.getWritableDatabase();
db.delete(</span><span style="color: #800000;">"</span><span style="color: #800000;">Book</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">pages>?</span><span style="color: #800000;">"</span>,<span style="color: #0000ff;">new</span> String[]{<span style="color: #800000;">"</span><span style="color: #800000;">500</span><span style="color: #800000;">"</span><span style="color: #000000;">});
}
});
</span>~~~
~~~<span style="color: #000000;">
query.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) {
SQLiteDatabase db</span>=<span style="color: #000000;">dbHelper.getWritableDatabase();
Cursor cursor</span>=db.query(<span style="color: #800000;">"</span><span style="color: #800000;">Book</span><span style="color: #800000;">"</span>,<span style="color: #0000ff;">null</span>,<span style="color: #800000;">"</span><span style="color: #800000;">pages>?</span><span style="color: #800000;">"</span>,<span style="color: #0000ff;">new</span> String[]{<span style="color: #800000;">"</span><span style="color: #800000;">10</span><span style="color: #800000;">"</span>},<span style="color: #0000ff;">null</span>,<span style="color: #0000ff;">null</span>,<span style="color: #0000ff;">null</span>,<span style="color: #0000ff;">null</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(cursor.moveToFirst()){
</span><span style="color: #0000ff;">do</span><span style="color: #000000;">{
String name</span>=cursor.getString(cursor.getColumnIndex(<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span><span style="color: #000000;">));
String author</span>=cursor.getString(cursor.getColumnIndex(<span style="color: #800000;">"</span><span style="color: #800000;">author</span><span style="color: #800000;">"</span><span style="color: #000000;">));
</span><span style="color: #0000ff;">int</span> pages=cursor.getInt(cursor.getColumnIndex(<span style="color: #800000;">"</span><span style="color: #800000;">pages</span><span style="color: #800000;">"</span><span style="color: #000000;">));
</span><span style="color: #0000ff;">double</span> price= cursor.getDouble(cursor.getColumnIndex(<span style="color: #800000;">"</span><span style="color: #800000;">price</span><span style="color: #800000;">"</span><span style="color: #000000;">));
Log.d(</span><span style="color: #800000;">"</span><span style="color: #800000;">数据库查找</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">书名:</span><span style="color: #800000;">"</span>+<span style="color: #000000;">name);
Log.d(</span><span style="color: #800000;">"</span><span style="color: #800000;">数据库查找</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">作者:</span><span style="color: #800000;">"</span>+<span style="color: #000000;">author);
Log.d(</span><span style="color: #800000;">"</span><span style="color: #800000;">数据库查找</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">页数:</span><span style="color: #800000;">"</span>+<span style="color: #000000;">pages);
Log.d(</span><span style="color: #800000;">"</span><span style="color: #800000;">数据库查找</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">价格:</span><span style="color: #800000;">"</span>+<span style="color: #000000;">price);
}</span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (cursor.moveToNext());
}
cursor.close();
}
});
</span>~~~</pre>
</div>
<p> </p>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-04-17 2023.4.17