XamarinSQLite教程在Xamarin.Android项目中使用数据库
在
Xamarin.Android
项目中使用预设数据库的具体操作步骤如下:
(
1
)创建一个
Xamarin.Android
项目,如
AndroidSQLiteDemo
。
(
2
)在
AndroidSQLiteDemo
项目的
Resources
文件夹下创建一个
Raw
文件夹。
(
3
)将上一节中创建的
Documents.db
数据库拖动到
Raw
文件夹中。
(
4
)打开
MainActivity.cs
文件,将
Documents.db
数据库的内容复制到
/data/data/[your packageName/files/ MyDocuments.db
中,代码如下:
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Support.V7.App;
using System.IO;
using System.Text;
namespace AndroidSQLiteDemo
{
[Activity(Label = "@string/app_name", MainLauncher = true, LaunchMode = Android.Content.PM.LaunchMode.SingleTop, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.main);
var toolbar = FindViewById(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
SupportActionBar.SetHomeButtonEnabled(false);
}
// Get our button from the layout resource,
// and attach an event to it
var clickButton = FindViewById(Resource.Id.my_button);
clickButton.Click += (sender, args) =>
{
var sqliteFilename = "MyDocuments.db";
string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); // Documents folder
var path = Path.Combine(documentsPath, sqliteFilename);
Console.WriteLine("数据库文件的目录:{0}",path);
if (!File.Exists(path))
{
var s = Resources.OpenRawResource(Resource.Raw.Documents);
//创建写入列
FileStream writeStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
ReadWriteStream(s, writeStream);
}
};
}
void ReadWriteStream(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// 写入所需字节
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
}
}
运行程序后,初始状态如图
1.31
所示。
轻拍
HELLO WORLD,CLICK ME!
按钮后,会在输出窗口输出以下的内容:
数据库文件的目录:
/data/user/0/com.company.AndroidSQLiteDemo/files/MyDocuments.db
此时
Documents.db
数据库中的内容就会复制到
MyDocuments.db
文件中。