1. 程式人生 > >Xamarin.Android 本地OA信用盤平臺出租數據庫 SQLiteDatabase 操作

Xamarin.Android 本地OA信用盤平臺出租數據庫 SQLiteDatabase 操作

rem exc err activit baseadapt istview 是否 .exe 模擬

目的:使用 SQLiteDatabase 創建OA信用盤平臺出租QQ2952777280【話仙源碼論壇】hxforum.com【木瓜源碼論壇】papayabbs.com 本地數據庫、表,並對數據進行增刪改查操作。

引用命名空間:

復制代碼
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Database.Sqlite;
using Android.Content;
using System.IO;
using System.Data;
using Mono.Data.Sqlite;
using System;
using Android.Database;

using System.Collections.Generic;
復制代碼
Person類

復制代碼
public class Person
{
public string Id { get; set; }
public string Name { get; set; }
public string IdCard { get; set; }
public string Sex { get; set; }
public string Age { get; set; }
}
復制代碼
創建局部變量Localhost_DataBase,以及控件,model類

復制代碼
SQLiteDatabase Localhost_DataBase = null;

Person person;
List<Person> list = new List<Person>();
ListView lv_Person;
復制代碼
創建數據庫

復制代碼
/// <summary>
/// 創建數據庫
/// </summary>
void CreateDataBase()
{
try
{
//打開或創建數據庫 名稱為:AssetsManage.db
Localhost_DataBase = OpenOrCreateDatabase("AssetsManage.db", FileCreationMode.Private, null);

    //判斷是否存在數據庫
    if (string.IsNullOrEmpty(GetSharedPreferences("AssetsManage", 0).GetString("AssetsManage", "")))//未創建數據庫
    {
        File.Create(Localhost_DataBase.Path);
        //繼續創建數據表
        CreateTable();
        //存取已創建數據庫信息
        GetSharedPreferences("AssetsManage", 0).Edit().PutString("AssetsManage", "OK").Commit();
    }
}
catch
{
    //存取創建數據庫時的異常
    GetSharedPreferences("Exception", 0).Edit().PutString("DataBaseException", "異常").Commit();
}

}
復制代碼
創建表

復制代碼
/// <summary>
/// 創建表
/// </summary>
void CreateTable()
{
string db = Localhost_DataBase.Path;
var conn = new SqliteConnection("Data Source=" + db);
//這裏可以創建多張表
var commands = new[] {
"CREATE TABLE tb_person (Id int,name varchar(20),sex varchar(80),age varchar(20),idcard varchar(18))",

                "CREATE TABLE tb_grade (uId int,mathgrade varchar(5),Chinese varchar(5),English varchar(5))"
};
try
{
    foreach (var cmd in commands)
    {
        using (var sqlitecmd = conn.CreateCommand())
        {
            sqlitecmd.CommandText = cmd;
            sqlitecmd.CommandType = CommandType.Text;
            conn.Open();
            sqlitecmd.ExecuteNonQuery();
            conn.Close();
        }
    }

    InsertData();
}
catch (System.Exception e)
{
    //存取創建數據表時的異常
    GetSharedPreferences("Exception", 0).Edit().PutString("DataTableException", "異常").Commit();
}

}
復制代碼
向表中插入模擬數據

復制代碼
/// <summary>
/// 插入數據
/// </summary>
void InsertData()
{
for(int i=1;i<=10;i++)
{
ContentValues cv = new ContentValues();
cv.Put("Id", i.ToString());
cv.Put("name", "張三" + i.ToString());
cv.Put("sex", new Random().Next(1, 2) == 1 ? "男" : "女");
cv.Put("age", (20 + i).ToString());
cv.Put("idcard", "21072619971111111" + (i - 1).ToString());
Localhost_DataBase.Insert("tb_person", null, cv);

    ContentValues cv1 = new ContentValues();
    cv1.Put("uId", i);
    cv1.Put("mathgrade", new Random().Next(1, 100));
    cv1.Put("Chinese", new Random().Next(1, 100));
    cv1.Put("English", new Random().Next(1, 100));
    Localhost_DataBase.Insert("tb_grade", null, cv1);
}

}
復制代碼
查詢表中數據

復制代碼
/// <summary>
/// 查詢數據
/// </summary>
void QueryData()
{
ICursor ic = Localhost_DataBase.Query("tb_person", null, null, null, null, null, null); //全部查詢
//ICursor ic = Localhost_DataBase.Query("tb_person", null, " id =? and name =?", new string[] { "1","張三1" }, null, null, null); //條件查詢
for (int i = 0; i < ic.Count; i++)
{
if (i == 0) //確定遊標位置
{
ic.MoveToFirst();
}
else
{
ic.MoveToNext();
}

    person = new Person(); 
    person.Id = ic.GetString(ic.GetColumnIndex("Id")); 
    person.Name = ic.GetString(ic.GetColumnIndex("name"));
    person.Age = ic.GetString(ic.GetColumnIndex("age"));
    person.Sex= ic.GetString(ic.GetColumnIndex("sex"));
    person.IdCard = ic.GetString(ic.GetColumnIndex("idcard")); 
    list.Add(person); 
}
lv_Person.Adapter = new ListViewAdapter(this, list);

}
復制代碼
根據條件刪除表中數據

復制代碼
/// <summary>
/// 刪除數據
/// </summary>
/// <param name="id"></param>
void DeleteData(string id)
{
Localhost_DataBase.Delete("tb_person", " Id=?", new string[] { id });
//Localhost_DataBase.Delete("tb_person", null, null); //刪除表中所有數據
}
復制代碼
根據條件修改表中數據

復制代碼
/// <summary>
/// 修改數據
/// </summary>
/// <param name="name"></param>
void UpdateData(string id)
{
ContentValues cv = new ContentValues();
cv.Put("name", "張三1000");
Localhost_DataBase.Update("tb_person", cv, " Id=? ", new string[] { id });
}
復制代碼
ListViewAdapter 類

復制代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace LocalhostDataBaseTest
{
public class ListViewAdapter:BaseAdapter<Person>
{
Activity context;
public List<Person> mings;

    public ListViewAdapter(Activity context, List<Person> mings)
    {
        this.context = context;
        this.mings = mings;
    }

    public override int Count
    {
        get
        {
            return this.mings.Count;
        }
    }

    public override long GetItemId(int position)
    {
        return position;
    }

    public override Person this[int position]
    {
        get
        {
            return this.mings[position];
        }
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var itme = this.mings[position];

        convertView = LayoutInflater.From(context).Inflate(Resource.Layout.Person_Items, parent, false);

        TextView item_id = convertView.FindViewById<TextView>(Resource.Id.item_id);
        TextView item_name = convertView.FindViewById<TextView>(Resource.Id.item_name);
        TextView item_idcard = convertView.FindViewById<TextView>(Resource.Id.item_idcard);
        TextView item_sex = convertView.FindViewById<TextView>(Resource.Id.item_sex);
        TextView item_age = convertView.FindViewById<TextView>(Resource.Id.item_age);

        item_id.Text = (position + 1).ToString();
        item_name.SetText(itme.Name, TextView.BufferType.Normal);
        item_idcard.SetText(itme.IdCard, TextView.BufferType.Normal);
        item_sex.SetText(itme.Sex, TextView.BufferType.Normal);
        item_age.SetText(itme.Age, TextView.BufferType.Normal); 

        return convertView;
    }
}

}
復制代碼
OnCreate調用

復制代碼
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);

// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);

lv_Person = FindViewById<ListView>(Resource.Id.listViewPerson);
CreateDataBase();
DeleteData("10");
UpdateData("9");
QueryData();

}

Xamarin.Android 本地OA信用盤平臺出租數據庫 SQLiteDatabase 操作