标签:
安卓系统自带数据库,名为SQLite。这篇文章我们用一个Demo来讲解安卓操作数据库的例子。
By the way,
安卓创建的数据库文件存放在/data/data/<包名>/database 下,后缀名一般为xxx.db
看到数据库文件,我们一般使用一款名为 SQLite Expert 的可视化工具来查看。
下面我们通过一个简单的例子来,创建一个数据,数据库里面创建一个表格。
注意,虽然我们在安卓开发中有包装好的api可以使用,但是sql语句我们最好还是掌握比较好。
先看图吧。
如图所示,下面是用 SQLite Expert打开后的界面,运行app后,点击按钮就会创建一个名为people的数据库,数据库下有一个Girl的表。(如果没有创建表,数据下面也有一个表,那个是系统自动生成的表,但我们不用理会。)
然后看代码
布局文件 activity_main.xml
<LinearLayout 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" android:orientation="vertical" tools:context="com.example.db.MainActivity" > <Button android:onClick="Create_Datebase" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Create Datebase" /> </LinearLayout>
java文件
MainActivity.java
package com.example.db; import android.app.Activity; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { private mySQLite myDatebaseHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myDatebaseHelper = new mySQLite(this, "people.db", null, 1); } public void Create_Datebase(View v){ /* * 如果数据库没有被创建,就创建并获取一个可写(其实也可以读)的数据库 如果数据库被创建,就直接获取一个可写(其实也可以读)的数据库 * 路径data/data/database/people.db */ myDatebaseHelper.getWritableDatabase(); } }
mySQLite.java
package com.example.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; //创建SQLLite需要继承SQLiteOpenHelper类抽象类 public class mySQLite extends SQLiteOpenHelper{ public static final String CREATE_GIRL = "create table Gril(_id integer primary key autoincrement,Name char(20),Age integer,Phone char(20))" ; private Context mContext; /* * 构造方法参数说明 * 第一个:传入上下文对象 * 第二个:要创建的数据库名字 * 第三个:油标工厂,传入油标对象,其实就是一个指针的功能。和ResultSet功能差不多,这个参数一般传入null * 第四个:数据库版本号,用于升级的时候调用。版本号必须大于1 * 构造方法四个参数传入其实是给父类调用的。 * */ public mySQLite(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub mContext = context; } //数据库被创建的时候会调用这个方法 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub /*db.execSQL(CREATE_BOOK); Toast.makeText(mContext,"Create Successded",0).show();*/ db.execSQL(CREATE_GIRL); Toast.makeText(mContext,"Create Successded",0).show(); } //数据库升级的时候调用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
标签:
原文地址:http://www.cnblogs.com/linfenghp/p/5406571.html