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
中,代码如下:
usingSystem;
usingAndroid.App;
usingAndroid.Content;
usingAndroid.Runtime;
usingAndroid.Views;
usingAndroid.Widget;
usingAndroid.OS;
usingAndroid.Support.V7.App;
usingSystem.IO;
usingSystem.Text;
namespaceAndroidSQLiteDemo
{
[Activity(Label="@string/app_name",MainLauncher=true,LaunchMode=Android.Content.PM.LaunchMode.SingleTop,Icon="@drawable/icon")]
publicclassMainActivity:AppCompatActivity
{
protectedoverridevoidOnCreate(Bundlebundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.main);
vartoolbar=FindViewById(Resource.Id.toolbar);
if(toolbar!=null)
{
SetSupportActionBar(toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
SupportActionBar.SetHomeButtonEnabled(false);
}
//Getourbuttonfromthelayoutresource,
//andattachaneventtoit
varclickButton=FindViewById(Resource.Id.my_button);
clickButton.Click+=(sender,args)=>
{
varsqliteFilename="MyDocuments.db";
stringdocumentsPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);//Documentsfolder
varpath=bine(documentsPath,sqliteFilename);
Console.WriteLine("数据库文件的目录:{0}",path);
if(!File.Exists(path))
{
vars=Resources.OpenRawResource(Resource.Raw.Documents);
//创建写入列
FileStreamwriteStream=newFileStream(path,FileMode.OpenOrCreate,FileAccess.Write);
ReadWriteStream(s,writeStream);
}
};
}
voidReadWriteStream(StreamreadStream,StreamwriteStream)
{
intLength=256;
Byte[]buffer=newByte[Length];
intbytesRead=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/pany.AndroidSQLiteDemo/files/MyDocuments.db
此时
Documents.db
数据库中的内容就会复制到
MyDocuments.db
文件中。