SQLlite实现增删查改

Posted 老张哈哈哈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLlite实现增删查改相关的知识,希望对你有一定的参考价值。

activity_main.xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="290dp"
        android:layout_height="wrap_content" 
        android:padding="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="手机号:"
            android:textSize="18sp" />

        <EditText
            android:id="@+id/ID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="290dp"
        android:layout_height="wrap_content" 
        android:padding="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"
            android:textSize="18dp" />

        <EditText
            android:id="@+id/Name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </LinearLayout>

    <TextView
        android:id="@+id/StudentList"
        android:layout_width="290dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="显示数据" 
        android:padding="10dp"/>

</LinearLayout>

 

main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/CreateDataBase"
        android:title="创建数据库">
    </item>
    <item
        android:id="@+id/CreateTable"
        android:title="创建表">
    </item>
    <item
        android:id="@+id/DropTable"
        android:title="删除表">
    </item>
    <item
        android:id="@+id/InsertData"
        android:title="插入数据">
    </item>
    <item
        android:id="@+id/ReadData"
        android:title="读取数据">
    </item>

</menu>

 

MainActivity.java

package com.zrdm.sqlitecrud;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    // 变量***********************************/
    private MyDataBase myDataBase = null;
    private String strSql = null;
    private EditText ID = null;
    private EditText Name = null;
    private TextView studentList = null;

    // 函数***********************************/

    // 创建
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        makeActionOverflowMenuShown();
        ID = (EditText) findViewById(R.id.ID);
        Name = (EditText) findViewById(R.id.Name);
        studentList = (TextView) findViewById(R.id.StudentList);        
    }

    // 创建菜单
    @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;
    }
/*
    // 创建表
    public void CreateTable(View v) {
        strSql = "Create table student(" + "ID nvarchar(20) not null,"
                + "Name nvarchar(40) not null," + "primary key(ID)" + " )";
        if (myDataBase == null) {
            myDataBase = new MyDataBase(this);
        }
        if (myDataBase.ExecSql(strSql)) {
            Toast.makeText(getApplicationContext(), "创建表成功!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "创建表失败!", Toast.LENGTH_SHORT).show();
        }

    }

    // 删除表
    public void DropTable(View v) {
        strSql = "Drop table student";
        if (myDataBase == null) {
            myDataBase = new MyDataBase(this);
        }
        if (myDataBase.ExecSql(strSql)) {
            Toast.makeText(getApplicationContext(), "删除表成功!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "删除表失败!", Toast.LENGTH_SHORT).show();
        }

    }

    // 插入数据
    public void InsertData(View v) {
        String strId = ID.getText().toString();
        String strName = Name.getText().toString();

        if (strId.equals("") || strName.equals("")) {
            Toast.makeText(getApplicationContext(), "学号或姓名不能为空!", Toast.LENGTH_SHORT).show();
        } else {
            strSql = "insert into student values (" + "\'" + strId + "\'," + "\'"
                    + strName + "\')";
            if (myDataBase == null) {
                myDataBase = new MyDataBase(this);
            }

            if (myDataBase.ExecSql(strSql)) {
                Toast.makeText(getApplicationContext(), "插入数据成功!", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "插入数据失败!", Toast.LENGTH_SHORT).show();
            }
        }
    }

    // 读取数据
    public void ReadData(View v) {
        if (myDataBase == null) {
            Toast.makeText(getApplicationContext(), "数据库不存在!", Toast.LENGTH_SHORT).show();
        } else {
            SQLiteDatabase db = myDataBase.getReadableDatabase();
            strSql = "select * from student";
            Cursor cursor = db.rawQuery(strSql, null);
            StringBuffer sb = new StringBuffer();
            while (cursor.moveToNext()) {
                Student s = new Student(cursor.getString(0),
                        cursor.getString(1));
                sb.append("学号:" + s.getID() + "     姓名:" + s.getName() + "\\n");
            }
            studentList.setText(sb);
        }
    }(注释区的代码是供按钮使用的因为我把按钮都删掉了所以这一段被我注释掉了,如果想添加按钮的话只需要在布局文件里添加按钮然后在这里吧注释符号去掉去壳)*/

    // 菜单被选中
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        int id = item.getItemId();
        if (id == R.id.CreateDataBase) {
            // 创建数据库
            if (myDataBase == null) {
                myDataBase = new MyDataBase(this);
                Toast.makeText(getApplicationContext(), "创建数据库成功!", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "数据库已存在!", Toast.LENGTH_SHORT).show();
            }
        } else if (id == R.id.CreateTable) {
            // 创建表
            strSql = "Create table student(" + "ID nvarchar(20) not null,"
                    + "Name nvarchar(40) not null," + "primary key(ID)" + " )";
            if (myDataBase == null) {
                myDataBase = new MyDataBase(this);
            }
            if (myDataBase.ExecSql(strSql)) {
                Toast.makeText(getApplicationContext(), "创建表成功!",Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "创建表失败!", Toast.LENGTH_SHORT).show();
            }
        } else if (id == R.id.DropTable) {
            // 删除表
            strSql = "Drop table student";
            if (myDataBase == null) {
                myDataBase = new MyDataBase(this);
            }
            if (myDataBase.ExecSql(strSql)) {
                Toast.makeText(getApplicationContext(), "删除表成功!", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "删除表失败!", Toast.LENGTH_SHORT).show();
            }
        } else if (id == R.id.InsertData) {
            // 插入数据
            String strId = ID.getText().toString();
            String strName = Name.getText().toString();

            if (strId.equals("") || strName.equals("")) {
                Toast.makeText(getApplicationContext(), "学号或姓名不能为空!", Toast.LENGTH_SHORT).show();
            } else {
                strSql = "insert into student values (" + "\'" + strId + "\',"
                        + "\'" + strName + "\')";
                if (myDataBase == null) {
                    myDataBase = new MyDataBase(this);
                }

                if (myDataBase.ExecSql(strSql)) {
                    Toast.makeText(getApplicationContext(), "插入数据成功!", Toast.LENGTH_SHORT)
                            .show();
                } else {
                    Toast.makeText(getApplicationContext(), "插入数据失败!", Toast.LENGTH_SHORT)
                            .show();
                }
            }
        } else if (id == R.id.ReadData) {
            // 读取数据
            if (myDataBase == null) {
                Toast.makeText(getApplicationContext(), "数据库不存在!", Toast.LENGTH_SHORT).show();
            } else {
                SQLiteDatabase db = myDataBase.getReadableDatabase();
                strSql = "select * from student";
                Cursor cursor = db.rawQuery(strSql, null);
                StringBuffer sb = new StringBuffer();
                while (cursor.moveToNext()) {
                    Student s = new Student(cursor.getString(0),
                            cursor.getString(1));
                    sb.append( " 姓名:" + s.getName() + "手机号:" + s.getID() +"\\n");

                }
                studentList.setText(sb);
            }
        }

        return super.onOptionsItemSelected(item);
    }

    // 显示右上角三个点菜单
    private void makeActionOverflowMenuShown() {
        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class
                    .getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

}

 

MyDataBase.java

package com.zrdm.sqlitecrud;

import java.util.concurrent.ExecutionException;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDataBase extends SQLiteOpenHelper{

    //变量*********************************************/
    private static String strDataBaseName = "Student.db";
    private static int intVersion = 1;
    private SQLiteDatabase db = null;
    
    //函数********************************************/
    public MyDataBase(Context context){
        super(context, strDataBaseName, null, intVersion);
        db = getWritableDatabase();
    }
    //构造
    public MyDataBase(Context context, String name, CursorFactory factory,
            int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
        // TODO Auto-generated constructor stub
    }

    //构造
    public MyDataBase(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    //执行SQL语句,建议语句类型 create 、delete 、 update 、insert
    public boolean ExecSql(String strSql){
        try{
            db.execSQL(strSql);
            return true;
        }catch(Exception e){
            return false;
        }        
    }    
    
    //创建
    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub
        
    }

    //版本升级
    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub
        
    }
    
}

 

Student.java

package com.zrdm.sqlitecrud;

import java.util.concurrent.ExecutionException;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDataBase extends SQLiteOpenHelper{

    //变量*********************************************/
    private static String strDataBaseName = "Student.db";
    private static int intVersion = 1;
    private SQLiteDatabase db = null;
    
    //函数********************************************/
    public MyDataBase(Context context){
        super(context, strDataBaseName, null, intVersion);
        db = getWritableDatabase();
    }
    //构造
    public MyDataBase(Context context, String name, CursorFactory factory,
            int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
        // TODO Auto-generated constructor stub
    }

    //构造
    public MyDataBase(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    //执行SQL语句,建议语句类型 create 、delete 、 update 、insert
    public boolean ExecSql(String strSql){
        try{
            db.execSQL(strSql);
            return true;
        }catch(Exception e){
            return false;
        }        
    }    
    
    //创建
    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub
        
    }

    //版本升级
    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub
        
    }
    
}

 

点击创建数据库->创建表->插入数据。如果创建表的时候失败就点击删除表然后点击创建表就可以.

 

插入数据成功:

读取数据成功:

以上是关于SQLlite实现增删查改的主要内容,如果未能解决你的问题,请参考以下文章

基于MVC实现增删查改

基于MVC实现增删查改

c++中的顺序表写法,主要实现(增删查改,构造函数,运算符重载)

单链表~增删查改(附代码)~简单实现

JavaWeb实现增删查改(图书信息管理)——之查询

JAVAWEB实现增删查改(图书信息管理)之添加功能实现