小型数据库的使用在移动开发过程中非常方便,Mono for android提供了多种数据库访问方式,可以使用sqlite、使用WCF直接访问数据库,sqlite的访问非常简单,下面是一个使用monodroid(或者Mono for andorid访问数据库的方法):
/// <summary>
/// A helper class for working with SQLite
/// </summary>
public static class Database
{
private static string db_file = "database.db3";
public static SqliteConnection GetConnection ()
{
var dbPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), db_file);
bool exists = File.Exists (dbPath);
if (!exists)
SqliteConnection.CreateFile (dbPath);
var conn = new SqliteConnection ("Data Source=" + dbPath);
if (!exists)
CreateDatabase (conn);
return conn;
}
private static void CreateDatabase (SqliteConnection connection)
{
var sql = "CREATE TABLE version (Id INTEGER PRIMARY KEY AUTOINCREMENT, isforce NUMERIC, version TEXT, url TEXT, info TEXT, dates datetime,isupdate NUMERIC);";
connection.Open ();
using (var cmd = connection.CreateCommand ()) {
cmd.CommandText = sql;
int temp=cmd.ExecuteNonQuery ();
}
connection.Close ();
}
}
具体的使用sql语句访问数据库的方法例子:
public List<Model.appVersion> GetAllVersion ()
{
List<Model.appVersion> mList=new List<Model.appVersion>();
var sql ="select id,isforce,version,url,info,dates,isupdate from version";
using (var conn = Database.GetConnection ()) {
conn.Open ();
using (var cmd = conn.CreateCommand ()) {
cmd.CommandText = sql;
using (var reader = cmd.ExecuteReader ()) {
while (reader.Read ())
mList.Add(new Model.appVersion(reader.GetInt32(0),reader.GetInt32(1),reader.GetString(2),reader.GetString(3),reader.GetString(4),reader.GetDateTime(5),reader.GetInt32(6)));
}
}
}
return mList;
}