C#Xamarin android文件创建\写入和SQLite

C#Xamarin android文件创建\写入和SQLite,c#,android,sqlite,file-io,xamarin,C#,Android,Sqlite,File Io,Xamarin,这是我的第一篇文章,但我一直在仔细研究如何在XamarinforVisualStudio中使用文本文件或SQLite数据库。我找到的所有示例最终都是java,或者是旧的Mono-android代码 该应用程序的jist是读取GPS数据,显示数据,并保存纬度和经度以及一些识别信息,如房间号。我的应用程序的显示部分工作得很好,所以现在我需要找到一种保存信息的方法,以便将数据传递给未来的类,以完成创建校园导航应用程序 以下是一些相关部分: path = GetDir("MCCMapping/",Fil

这是我的第一篇文章,但我一直在仔细研究如何在XamarinforVisualStudio中使用文本文件或SQLite数据库。我找到的所有示例最终都是java,或者是旧的Mono-android代码

该应用程序的jist是读取GPS数据,显示数据,并保存纬度和经度以及一些识别信息,如房间号。我的应用程序的显示部分工作得很好,所以现在我需要找到一种保存信息的方法,以便将数据传递给未来的类,以完成创建校园导航应用程序

以下是一些相关部分:

path = GetDir("MCCMapping/",FileCreationMode.Append).ToString();
我不确定设置文件创建目录是否正确

String location = String.Format("{0}|{1}|{2}|{3}", roomNum.Text, campus.SelectedItem.ToString(), current.Latitude.ToString(),
                                             current.Longitude.ToString());
                using (data_file = new StreamWriter(path+"/MCC_ROOM_DATA.txt", true))
                {
                    data_file.WriteLine(location);
                }
这不太管用。我需要能够从应用程序外部访问.txt文件,甚至实现SQLite数据库来存储相同的信息。我拥有所有必要的清单权限。我的设备没有外部存储,因此如果必须采用这种方式,它将模拟它

如果您能帮助我,我们将不胜感激。谢谢

更新1:

folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            conn = new SQLiteAsyncConnection(System.IO.Path.Combine(folder, "MCC_ROOMS.db"));
            conn.CreateTableAsync<Room>().ContinueWith(t => {});
我不太确定在“继续”部分中放什么。另外,这是否允许我以后从其他应用程序访问该表?谢谢


更新2:多亏了Jason,我有了一个可用的应用程序。我使用了内置的外部存储目录,如果关闭usb调试,则可以访问该文件。

Xamarin提供枚举,帮助您获取允许访问的文件夹的文件夹路径。不能只写入任意文件路径

var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var filename = Path.Combine(path, "mydata.txt");
获得路径后,可以使用常规文件IO操作进行读写

using (data_file = new StreamWriter(filename, true))
{
  data_file.WriteLine(location);
}
Xamarin的SQLite.Net组件提供了一个演示如何在应用程序中创建和使用db的工具

string folder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
var conn = new SQLiteConnection (System.IO.Path.Combine (folder, "stocks.db"));

谢谢你的快速回答。我确实有个问题。我正在为VisualStudio运行Xamarin。我确实下载了Xamarin SQLite.NET包,但不太了解如何使用它。我已经将新代码添加到了我的原始帖子的末尾。我会避免在你刚刚开始的时候使用异步方法——从方法的阻塞版本开始就不那么混乱了。但是为了回答您的问题,ContinueWith是在db创建完成后您希望代码执行的任何操作。在Android上,如果您将db文件放在多个应用程序可以访问的文件夹中,则多个应用程序可以共享同一个db。
string folder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
var conn = new SQLiteConnection (System.IO.Path.Combine (folder, "stocks.db"));