• SQLite使用方法


    SQLite介绍:

    http://www.sqlite.org/

    SQLiteOpenHelper使用方法:

    ·getReadableDatabase()  

    ·getWriteableDatabase()

    ·onCreate(SQLiteDatabase db)

    ·onOpen(SQLiteDatabase db)

    ·onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)

    ·close()

    main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    <Button
    	android:id="@+id/createDatabase"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="createDatabase"
        />
        
    <Button
    	android:id="@+id/updateDatabase"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="updateDatabase"
        />
    
    <Button
    	android:id="@+id/insert"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="insert"/>
    <Button
    	android:id="@+id/update"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="update"/>
    <Button
    	android:id="@+id/query"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="query"/>
    	
    </LinearLayout>
    

     DatabaseHelper.java:

    package mars.sqlite3.db;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    
    //DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能,
    //第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作
    //第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
    
    public class DatabaseHelper extends SQLiteOpenHelper {
    	
    	private static final int VERSION = 1;
    	//在SQLiteOepnHelper的子类当中,必须有该构造函数
    	public DatabaseHelper(Context context, String name, CursorFactory factory,
    			int version) {
    		//必须通过super调用父类当中的构造函数
    		super(context, name, factory, version);
    		// TODO Auto-generated constructor stub
    	}
    	public DatabaseHelper(Context context,String name){
    		this(context,name,VERSION);
    	}
    	public DatabaseHelper(Context context,String name,int version){
    		this(context, name,null,version);
    	}
    
    	//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    		// TODO Auto-generated method stub
    		System.out.println("create a Database");
    		//execSQL函数用于执行SQL语句
    		db.execSQL("create table user(id int,name varchar(20))");
    	}
    
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		// TODO Auto-generated method stub
    		System.out.println("update a Database");
    	}
    
    }
    

     SQLiteActivity.java:

    package mars.sqlite3;
    
    import mars.sqlite3.db.DatabaseHelper;
    import android.app.Activity;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class SQLiteActivity extends Activity {
        /** Called when the activity is first created. */
    	private Button createButton;
    	private Button insertButton;
    	private Button updateButton;
    	private Button updateRecordButton;
    	private Button queryButton;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            createButton = (Button)findViewById(R.id.createDatabase);
            updateButton = (Button)findViewById(R.id.updateDatabase);
            insertButton = (Button)findViewById(R.id.insert);
            updateRecordButton = (Button)findViewById(R.id.update);
            queryButton = (Button)findViewById(R.id.query);
            createButton.setOnClickListener(new CreateListener());
            updateButton.setOnClickListener(new UpdateListener());
            insertButton.setOnClickListener(new InsertListener());
            updateRecordButton.setOnClickListener(new UpdateRecordListener());
            queryButton.setOnClickListener(new QueryListener());
        }
        class CreateListener implements OnClickListener{
    		@Override
    		public void onClick(View v) {
    			//创建一个DatabaseHelper对象
    			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
    			//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库
    			SQLiteDatabase db = dbHelper.getReadableDatabase();
    		}
        }
        class UpdateListener implements OnClickListener{
    
    		@Override
    		public void onClick(View v) {
    			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
    			SQLiteDatabase db = dbHelper.getReadableDatabase();
    		}
        	
        }
        class InsertListener implements OnClickListener{
    
    		@Override
    		public void onClick(View v) {
    			//生成ContentValues对象
    			ContentValues values = new ContentValues();
    			//想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
    			values.put("id", 1);
    			values.put("name","zhangsan");
    			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
    			SQLiteDatabase db = dbHelper.getWritableDatabase();
    			//调用insert方法,就可以将数据插入到数据库当中
    			db.insert("user", null, values);
    		}
        }
        //更新操作就相当于执行SQL语句当中的update语句
        //UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX...
        class UpdateRecordListener implements OnClickListener{
    
    		@Override
    		public void onClick(View arg0) {
    			// TODO Auto-generated method stub
    			//得到一个可写的SQLiteDatabase对象
    			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
    			SQLiteDatabase db = dbHelper.getWritableDatabase();
    			ContentValues values = new ContentValues();
    			values.put("name", "zhangsanfeng");
    			//第一个参数是要更新的表名
    			//第二个参数是一个ContentValeus对象
    			//第三个参数是where子句
    			db.update("user", values, "id=?", new String[]{"1"});
    		}
        }
        class QueryListener implements OnClickListener{
    
    		@Override
    		public void onClick(View v) {
    			System.out.println("aaa------------------");
    			Log.d("myDebug", "myFirstDebugMsg");
    			
    			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
    			SQLiteDatabase db = dbHelper.getReadableDatabase();
    			Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
    			while(cursor.moveToNext()){
    				String name = cursor.getString(cursor.getColumnIndex("name"));
    				System.out.println("query--->" + name);
    			}
    		}
        }
        
    }
    

     在命令提示符中输入adb shell就可以进入linux命令行,然后可以使用linux命令操作模拟器。进入根目录下面的data目录,再进入该目录下的data目录,cd mars.sqlite3,进入mars.sqlite3,点击创建数据库按钮之后,ls,发现mars.sqlite3下面多了databases目录,进入该目录后会发现test_mars_db这个文件。使用sqlite3 test_mars_db对数据库进行操作,.schema可以显示数据库中的表以及这些表的创建表的语句。select * from user,可以显示表中的数据。

  • 相关阅读:
    在ChemDraw中输入千分号的方法
    将几何画板x轴坐标值换成弧度制的方法
    几何画板怎么会出现符号乱码
    几何画板绘制正方形网格的技巧
    怎么用ChemDraw 15.1 Pro绘制彩色结构
    深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
    IIS下PHP的ISAPI和FastCGI比较
    非常好用的两个PHP函数 serialize()和unserialize()
    为什么要让我们的“领域模型”裸奔?
    依赖注入
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/3138212.html
Copyright © 2020-2023  润新知