Android实验七之SQLite数据库存储

实验效果图:

LogCat中打印出的数据:

 

代码:

 

MainActivity.java

package com.example.sqlist;

import com.example.helper.MyDataHelper;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity
{

	private MyDataHelper dbHelper;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		dbHelper = new MyDataHelper(this, "BookStore.db", null, 2);
		Button createDatabase = (Button) findViewById(R.id.create);
		Button addData = (Button) findViewById(R.id.add);
		Button updateData = (Button) findViewById(R.id.update);
		Button deleteData = (Button) findViewById(R.id.delete);
		Button queryData = (Button) findViewById(R.id.query);
		
		createDatabase.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View arg0)
			{
				// TODO Auto-generated method stub
				dbHelper.getWritableDatabase();
			}
		});
		addData.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View arg0)
			{
				// TODO Auto-generated method stub
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				ContentValues values = new ContentValues();
				//第一条数据
				values.put("name", "The Da Vinci Code");
				values.put("author", "Dan brown");
				values.put("pages", 454);
				values.put("price", 16.96);
				db.insert("Book", null,values);//插入
				//第二条数据
				values.put("name", "The Lost Symol");
				values.put("author", "Dan brown");
				values.put("pages", 510);
				values.put("price", 19.95);
				db.insert("Book", null,values);//插入第二条
				
			}
		});
		
		updateData.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View arg0)
			{
				// TODO Auto-generated method stub
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				ContentValues values = new ContentValues();
				values.put("price", 10.99);
				db.update("Book", values, "name=?", new String[]{"The Da Vinci Code"});
			}
		});
		
		deleteData.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View arg0)
			{
				// TODO Auto-generated method stub
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				db.delete("Book", "pages>?", new String[]{"500"});
			}
		});
		
		queryData.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View arg0)
			{
				// TODO Auto-generated method stub
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				Cursor cursor = db.query("Book", null, null, null, null, null, null);
				if(cursor.moveToFirst()){
					do{
						//遍历Cursor对象,取出数据并打印
						String name = cursor.getString(cursor.getColumnIndex("name"));
						String author = cursor.getString(cursor.getColumnIndex("author"));
						int pages = cursor.getInt(cursor.getColumnIndex("pages"));
						double price = cursor.getDouble(cursor.getColumnIndex("price"));
						Log.d("MainActivity", "book name is "+name);
						Log.d("MainActivity", "book author is "+author);
						Log.d("MainActivity", "book pages is "+pages);
						Log.d("MainActivity", "book price is "+price);
					}while(cursor.moveToNext());
				}
				cursor.close();
			}
		});
	}

	@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;
	}

}

 


MyDataHelper.java

package com.example.helper;

import android.R.string;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MyDataHelper extends SQLiteOpenHelper
{

	public static final String CREATE_BOOK = "create table Book (" +
			"id integer primary key autoincrement," +
			"author text," +
			"price real," +
			"pages integer," +
			"name text)";
	
	public static final String CREATE_CATEGORY = "create table Category(" +
			"id integer primary key autoincrement," +
			"category_name text," +
			"category_code integer)";
	
	private Context mContext;
	
	public MyDataHelper(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);
		db.execSQL(CREATE_CATEGORY);
		Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_LONG).show();
		
	}
	

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
	{
		// TODO Auto-generated method stub
		db.execSQL("drop table if exists Book");
		db.execSQL("drop table if exists Category");
		onCreate(db);
		
	}
}



activity_main.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" >

    <Button
        android:id="@+id/create"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="Create database"/>

    <Button
        android:id="@+id/add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/create"
        android:layout_marginTop="5dp"
        android:text="Add data" />
    <Button 
        android:id="@+id/update"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/add"
        android:layout_marginTop="5dp"
        android:text="Update data"/>
    <Button 
        android:id="@+id/delete"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_below="@+id/update"
        android:layout_marginTop="5dp"
        android:text="Delete data"/>
    <Button 
        android:id="@+id/query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/delete"
        android:layout_marginTop="5dp"
        android:text="Query data"/>

</RelativeLayout>


 

总结:

在Add时,点了三次add,就添加了三次重复的数据,重复的数据多占用了空间,是该程序的弊端之一,应该在添加数据时先判断是否是完全一致的数据,避免数据的重复录入!

展开阅读全文

没有更多推荐了,返回首页