android 数据库的种类,Android SQLite数据库

SQLite是一个开源SQL数据库,用于将数据存储到设备上的文本文件中。Android带有内置的SQLite数据库实现。

SQLite支持所有关系数据库功能。为了访问此数据库,您不需要为它建立任何类型的连接,如JDBC,ODBC等

数据库 - 包

主要包是android.database.sqlite,其中包含管理您自己的数据库的类

数据库 - 创建

要创建数据库,只需使用数据库名称和模式作为参数调用此方法openOrCreateDatabase。它返回一个SQLite数据库的实例,您必须在自己的对象中接收它。它的语法如下

SQLiteDatabase mydatabase = openOrCreateDatabase("your database name",MODE_PRIVATE,null);

除此之外,数据库包中还有其他功能可以完成这项工作。它们列在下面

序号

方法和描述

1

openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags,DatabaseErrorHandler errorHandler)

此方法仅使用适当的标志模式打开现有数据库。公共标志模式可以是OPEN_READWRITE OPEN_READONLY

2

openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags)

它类似于上面的方法,因为它还打开现有数据库,但它没有定义任何处理数据库错误的处理程序

3

openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)

它不仅会打开,还会创建数据库(如果不存在)。此方法等同于openDatabase方法。

4

openOrCreateDatabase(文件文件,SQLiteDatabase.CursorFactory工厂)

此方法与上述方法类似,但它将File对象作为路径而不是字符串。它相当于file.getPath()

数据库 - 插入

我们可以使用SQLiteDatabase类中定义的execSQL方法创建表或将数据插入表中。其语法如下

mydatabase.execSQL("CREATE TABLE IF NOT EXISTS codingdict(Username VARCHAR,Password VARCHAR);");

mydatabase.execSQL("INSERT INTO codingdict VALUES('admin','admin');");

这将在我们的数据库中的表中插入一些值。下面给出了另一种方法,它也可以完成相同的工作,但需要一些额外的参数

序号

方法和描述

1

execSQL(String sql,Object [] bindArgs)

此方法不仅插入数据,还用于使用绑定参数更新或修改数据库中已存在的数据

数据库 - 获取

我们可以使用Cursor类的对象从数据库中检索任何内容。我们将调用这个名为rawQuery的类的方法,它将返回一个结果集,其中光标指向该表。我们可以向前移动光标并检索数据。

Cursor resultSet = mydatbase.rawQuery("Select * from codingdict",null);

resultSet.moveToFirst();

String username = resultSet.getString(0);

String password = resultSet.getString(1);

Cursor类中还有其他可用的函数,可以让我们有效地检索数据。包括

序号

方法和描述

1

getColumnCount()

此方法返回表的总列数。

2

getColumnIndex(String columnName)

此方法通过指定列的名称来返回列的索引号

3

getColumnName(int columnIndex)

此方法通过指定列的索引来返回列的名称

4

getColumnNames()

此方法返回表的所有列名称的数组。

getCount()

此方法返回游标中的总行数

6

getPosition()

此方法返回表中光标的当前位置

7

isClosed()

如果光标关闭,则此方法返回true,否则返回false

数据库 - 助手类

为了管理与数据库相关的所有操作,已经给出了一个辅助类,称为SQLiteOpenHelper。它自动管理数据库的创建和更新。其语法如下

public class DBHelper extends SQLiteOpenHelper {

public DBHelper(){

super(context,DATABASE_NAME,null,1);

}

public void onCreate(SQLiteDatabase db) {}

public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {}

}

这是一个演示SQLite数据库使用的示例。它创建了一个基本联系人应用程序,允许插入,删除和修改联系人。

要试验此示例,您需要在支持相机的实际设备上运行此示例。

序号

描述

1

您将使用Android studio在com.example.sairamkrishna.myapplication包下创建Android应用程序。

2

修改src / MainActivity.java文件以获取所有XML组件的引用并填充listView上的联系人。

3

创建将管理数据库工作的新src / DBHelper.java

4

创建一个新的Activity作为DisplayContact.java,它将在屏幕上显示联系人

5

修改res / layout / activity_main以添加相应的XML组件

6

修改res / layout / activity_display_contact.xml以添加相应的XML组件

7

修改res / values / string.xml以添加必要的字符串组件

8

修改res / menu / display_contact.xml以添加必要的菜单组件

9

创建一个新菜单作为res / menu / mainmenu.xml以添加插入联系人选项

10

运行应用程序并选择正在运行的Android设备并在其上安装应用程序并验证结果。

以下是修改后的 MainActivity.java 的内容。

package com.example.sairamkrishna.myapplication;

import android.content.Context;

import android.content.Intent;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends ActionBarActivity {

public final static String EXTRA_MESSAGE = "MESSAGE";

private ListView obj;

DBHelper mydb;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mydb = new DBHelper(this);

ArrayList array_list = mydb.getAllCotacts();

ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);

obj = (ListView)findViewById(R.id.listView1);

obj.setAdapter(arrayAdapter);

obj.setOnItemClickListener(new OnItemClickListener(){

@Override

public void onItemClick(AdapterView> arg0, View arg1, int arg2,long arg3) {

// TODO Auto-generated method stub

int id_To_Search = arg2 + 1;

Bundle dataBundle = new Bundle();

dataBundle.putInt("id", id_To_Search);

Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

intent.putExtras(dataBundle);

startActivity(intent);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item){

super.onOptionsItemSelected(item);

switch(item.getItemId()) {

case R.id.item1:Bundle dataBundle = new Bundle();

dataBundle.putInt("id", 0);

Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

intent.putExtras(dataBundle);

startActivity(intent);

return true;

default:

return super.onOptionsItemSelected(item);

}

}

public boolean onKeyDown(int keycode, KeyEvent event) {

if (keycode == KeyEvent.KEYCODE_BACK) {

moveTaskToBack(true);

}

return super.onKeyDown(keycode, event);

}

}

以下是显示联系活动 DisplayContact.java 的修改内容

package com. example.sairamkrishna.myapplication;

import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class DisplayContact extends Activity {

int from_Where_I_Am_Coming = 0;

private DBHelper mydb ;

TextView name ;

TextView phone;

TextView email;

TextView street;

TextView place;

int id_To_Update = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_display_contact);

name = (TextView) findViewById(R.id.editTextName);

phone = (TextView) findViewById(R.id.editTextPhone);

email = (TextView) findViewById(R.id.editTextStreet);

street = (TextView) findViewById(R.id.editTextEmail);

place = (TextView) findViewById(R.id.editTextCity);

mydb = new DBHelper(this);

Bundle extras = getIntent().getExtras();

if(extras !=null) {

int Value = extras.getInt("id");

if(Value>0){

//means this is the view part not the add contact part.

Cursor rs = mydb.getData(Value);

id_To_Update = Value;

rs.moveToFirst();

String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));

String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));

String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));

String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));

String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));

if (!rs.isClosed()) {

rs.close();

}

Button b = (Button)findViewById(R.id.button1);

b.setVisibility(View.INVISIBLE);

name.setText((CharSequence)nam);

name.setFocusable(false);

name.setClickable(false);

phone.setText((CharSequence)phon);

phone.setFocusable(false);

phone.setClickable(false);

email.setText((CharSequence)emai);

email.setFocusable(false);

email.setClickable(false);

street.setText((CharSequence)stree);

street.setFocusable(false);

street.setClickable(false);

place.setText((CharSequence)plac);

place.setFocusable(false);

place.setClickable(false);

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

Bundle extras = getIntent().getExtras();

if(extras !=null) {

int Value = extras.getInt("id");

if(Value>0){

getMenuInflater().inflate(R.menu.display_contact, menu);

} else{

getMenuInflater().inflate(R.menu.menu_main menu);

}

}

return true;

}

public boolean onOptionsItemSelected(MenuItem item) {

super.onOptionsItemSelected(item);

switch(item.getItemId()) {

case R.id.Edit_Contact:

Button b = (Button)findViewById(R.id.button1);

b.setVisibility(View.VISIBLE);

name.setEnabled(true);

name.setFocusableInTouchMode(true);

name.setClickable(true);

phone.setEnabled(true);

phone.setFocusableInTouchMode(true);

phone.setClickable(true);

email.setEnabled(true);

email.setFocusableInTouchMode(true);

email.setClickable(true);

street.setEnabled(true);

street.setFocusableInTouchMode(true);

street.setClickable(true);

place.setEnabled(true);

place.setFocusableInTouchMode(true);

place.setClickable(true);

return true;

case R.id.Delete_Contact:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage(R.string.deleteContact)

.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

mydb.deleteContact(id_To_Update);

Toast.makeText(getApplicationContext(), "Deleted Successfully",

Toast.LENGTH_SHORT).show();

Intent intent = new Intent(getApplicationContext(),MainActivity.class);

startActivity(intent);

}

})

.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

// User cancelled the dialog

}

});

AlertDialog d = builder.create();

d.setTitle("Are you sure");

d.show();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

public void run(View view) {

Bundle extras = getIntent().getExtras();

if(extras !=null) {

int Value = extras.getInt("id");

if(Value>0){

if(mydb.updateContact(id_To_Update,name.getText().toString(),

phone.getText().toString(), email.getText().toString(),

street.getText().toString(), place.getText().toString())){

Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();

Intent intent = new Intent(getApplicationContext(),MainActivity.class);

startActivity(intent);

} else{

Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();

}

} else{

if(mydb.insertContact(name.getText().toString(), phone.getText().toString(),

email.getText().toString(), street.getText().toString(),

place.getText().toString())){

Toast.makeText(getApplicationContext(), "done",

Toast.LENGTH_SHORT).show();

} else{

Toast.makeText(getApplicationContext(), "not done",

Toast.LENGTH_SHORT).show();

}

Intent intent = new Intent(getApplicationContext(),MainActivity.class);

startActivity(intent);

}

}

}

}

以下是Database类 DBHelper.java 的内容

package com. example.sairamkrishna.myapplication;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Hashtable;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.DatabaseUtils;

import android.database.sqlite.SQLiteOpenHelper;

import android.database.sqlite.SQLiteDatabase;

public class DBHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "MyDBName.db";

public static final String CONTACTS_TABLE_NAME = "contacts";

public static final String CONTACTS_COLUMN_ID = "id";

public static final String CONTACTS_COLUMN_NAME = "name";

public static final String CONTACTS_COLUMN_EMAIL = "email";

public static final String CONTACTS_COLUMN_STREET = "street";

public static final String CONTACTS_COLUMN_CITY = "place";

public static final String CONTACTS_COLUMN_PHONE = "phone";

private HashMap hp;

public DBHelper(Context context) {

super(context, DATABASE_NAME , null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL(

"create table contacts " +

"(id integer primary key, name text,phone text,email text, street text,place text)"

);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

db.execSQL("DROP TABLE IF EXISTS contacts");

onCreate(db);

}

public boolean insertContact (String name, String phone, String email, String street,String place) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", name);

contentValues.put("phone", phone);

contentValues.put("email", email);

contentValues.put("street", street);

contentValues.put("place", place);

db.insert("contacts", null, contentValues);

return true;

}

public Cursor getData(int id) {

SQLiteDatabase db = this.getReadableDatabase();

Cursor res = db.rawQuery( "select * from contacts where id="+id+"", null );

return res;

}

public int numberOfRows(){

SQLiteDatabase db = this.getReadableDatabase();

int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME);

return numRows;

}

public boolean updateContact (Integer id, String name, String phone, String email, String street,String place) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", name);

contentValues.put("phone", phone);

contentValues.put("email", email);

contentValues.put("street", street);

contentValues.put("place", place);

db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) } );

return true;

}

public Integer deleteContact (Integer id) {

SQLiteDatabase db = this.getWritableDatabase();

return db.delete("contacts",

"id = ? ",

new String[] { Integer.toString(id) });

}

public ArrayList getAllCotacts() {

ArrayList array_list = new ArrayList();

//hp = new HashMap();

SQLiteDatabase db = this.getReadableDatabase();

Cursor res = db.rawQuery( "select * from contacts", null );

res.moveToFirst();

while(res.isAfterLast() == false){

array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));

res.moveToNext();

}

return array_list;

}

}

以下是 res / layout / activity_main.xml 的内容

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/textView"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textSize="30dp"

android:text="Data Base" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Tutorials Point"

android:id="@+id/textView2"

android:layout_below="@+id/textView"

android:layout_centerHorizontal="true"

android:textSize="35dp"

android:textColor="#ff16ff01" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageView"

android:layout_below="@+id/textView2"

android:layout_centerHorizontal="true"

android:src="@drawable/logo"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/scrollView"

android:layout_below="@+id/imageView"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true">

android:id="@+id/listView1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true" >

以下是 res / layout / activity_display_contact.xml 的内容

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/scrollView1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

tools:context=".DisplayContact" >

android:layout_width="match_parent"

android:layout_height="370dp"

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:id="@+id/editTextName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_marginTop="5dp"

android:layout_marginLeft="82dp"

android:ems="10"

android:inputType="text" >

android:id="@+id/editTextEmail"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editTextStreet"

android:layout_below="@+id/editTextStreet"

android:layout_marginTop="22dp"

android:ems="10"

android:inputType="textEmailAddress" />

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/editTextName"

android:layout_alignParentLeft="true"

android:text="@string/name"

android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editTextCity"

android:layout_alignParentBottom="true"

android:layout_marginBottom="28dp"

android:onClick="run"

android:text="@string/save" />

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/editTextEmail"

android:layout_alignLeft="@+id/textView1"

android:text="@string/email"

android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/textView5"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/editTextPhone"

android:layout_alignLeft="@+id/textView1"

android:text="@string/phone"

android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/textView4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_above="@+id/editTextEmail"

android:layout_alignLeft="@+id/textView5"

android:text="@string/street"

android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/editTextCity"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignRight="@+id/editTextName"

android:layout_below="@+id/editTextEmail"

android:layout_marginTop="30dp"

android:ems="10"

android:inputType="text" />

android:id="@+id/textView3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/editTextCity"

android:layout_alignBottom="@+id/editTextCity"

android:layout_alignParentLeft="true"

android:layout_toLeftOf="@+id/editTextEmail"

android:text="@string/country"

android:textAppearance="?android:attr/textAppearanceMedium" />

android:id="@+id/editTextStreet"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editTextName"

android:layout_below="@+id/editTextPhone"

android:ems="10"

android:inputType="text" >

android:id="@+id/editTextPhone"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editTextStreet"

android:layout_below="@+id/editTextName"

android:ems="10"

android:inputType="phone|text" />

以下是 res / value / string.xml 的内容

Address Book

Settings

Hello world!

Add New

Edit Contact

Delete Contact

DisplayContact

Name

Phone

Email

Street

City/State/Zip

Save Contact

Are you sure, you want to delete it.

Yes

No

以下是 res / menu / main_menu.xml 的内容

android:icon="@drawable/add"

android:title="@string/Add_New" >

以下是 res / menu / display_contact.xml 的内容

android:id="@+id/Edit_Contact"

android:orderInCategory="100"

android:title="@string/edit"/>

android:id="@+id/Delete_Contact"

android:orderInCategory="100"

android:title="@string/delete"/>

这是该项目的defomant AndroidManifest.xml

package="com.example.sairamkrishna.myapplication" >

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/app_name" >

让我们尝试运行您的应用程序。我假设您已将实际的Android移动设备与计算机相关联。要从Android工作室运行应用程序,请打开项目的某个活动文件,然后单击

76338ddfc058aba988fb4a0c0612fde3.png工具栏中的“运行” 图标。在开始申请之前,Android studio将显示以下窗口,以选择您要运行Android应用程序的选项。

561be470f1c9c22d9e459e7b8982feae.png

选择您的移动设备作为选项,然后检查您的移动设备,该设备将显示以下屏幕 -

6b19ddab33dc57ec89b433aabeb51f80.png

现在打开您的可选菜单,它将显示如下图像: 可选菜单出现在不同版本的不同位置

aacf8ce4a60488e07eae608500e1900a.png

单击菜单屏幕的添加按钮以添加新联系人。它将显示以下屏幕

8f6562f1498ea76ee09dd029a6411e8d.png

它将显示以下字段。请输入所需信息,然后单击保存联系人。它会带你回到主屏幕。

90503e807a8e7434217078f395269e59.png

现在我们已经添加了联系人sai。为了查看您的数据库在哪里创建。打开你的Android工作室,连接你的手机。去 工具/ android /

android设备监视器 。现在浏览文件资源管理器选项卡。现在浏览此文件夹 / data / data /

/ databases 。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值