zoukankan      html  css  js  c++  java
  • android基本的数据库创建和使用

      android的四大组件中就有Content Provider,对其他应用,提供自己的数据,所以,一般情况下,android应用不需要提供content provider。

      1.  简单的数据库表单字段声明:

       MySqlName.java

        

            public static final int VERSION = 1;
        
        public static final String DBNAME = "mydb";     
             
            /*
         * 联系人详情数据库
         */
        public class Contacts{
            public static final String TableName="contacts";
            
            public static final String Id="cId";//联系人的uri
            
            public static final String Number="number";
            
            public static final String Name="name";
        }

    一般一张表,写一个内部类,内部类的变量是数据库中的列。这个文件写成这样子就可以了。

      2. 创建数据库

      MySql.java

      

    public class Mysql extends SQLiteOpenHelper{

    public
    Mysql(Context context) { super(context,Mysqlname.DBNAME, null, Mysqlname.VERSION); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub /* * 创建人员表单 */ db.execSQL("create table "+Mysqlname.Contacts.TableName+"(" + Mysqlname.Contacts.Id+" integer primary key autoincrement not null,"+ Mysqlname.Contacts.Number+" text ," + Mysqlname.Contacts.Name+" text );"
      
            ); }
    }

    这样,在这个数据库创建就完成了,但是除了创建工作,还需要对外提供一些方法;

      3.  操作

    • 查询 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cr =db.query(Mysqlname.Contact.TableName, null, Mysqlname.Contact.Id+"=?", new String[]{id}, null, null, null);

    如果需要使用这个cr的内的值,需要:

    if(cr!=null&&cr.getCount()>0&&cr.moveToFirst()){
    String name = cr.getString(cr.getColumnIndex(Mysqlname.Contact.Name));
    }

    这里必须要movetofirst,不然会报错。

    • 插入
    db.insert(Mysqlname.Contact.TableName, Mysqlname..Contact.ID, values)
    • 删除
    db.delete(Mysqlname.Contact.TableName, Mysqlname.Contact.Id+"=? and "+Mysqlname.Contact.NAME+"=?", new String[]{id,name});
    • 修改
    db.update(Mysqlname.Contact.TableName, values, Mysqlname.Contact.Id+"=?", new String[]{id})

    注意,以上的db ,Cursor,在使用完毕后,必须及时调用db.close(),cr.close();

    使用事务进行批量操作:

    db.beginTransaction();
    
    String deleteContactSql = "DELETE from "+ Mysqlname.Contact.TableName+ " where "
    + Mysqlname.Contact.ContactId+ "='"+num+"';";
    SQLiteStatement deleteContact = db.compileStatement(deleteContactSql);
    deleteContact.executeUpdateDelete();
    
    db.setTransactionSuccessful();
    db.endTransaction();
  • 相关阅读:
    C# 实现复杂对象的序列化与反序列化
    C#操纵XML文档(主要是应用程序的配置文件)
    滕王阁序——王 勃 (注:我至爱的一篇文章)
    SmartClient(智能客户端)学习笔记之——Smart Client基本学习资源
    listview按列自动排序的一点补充
    (转)SmartClient(智能客户端)学习笔记之——Microsoft Updater Application Block ApplicationUpdater assembly设计
    用超图实现城市给水的爆管分析
    .net2005中对asp.net中GridView的常用操作
    .net2003中对DataGrid的常用操作
    为DataGrid或者GridView或者DataList最前面增加一排序号
  • 原文地址:https://www.cnblogs.com/qgli/p/3807533.html
Copyright © 2011-2022 走看看