这是我的第一篇文章,但我一直在搜索堆栈,以了解如何在Xamarin for Visual Studio中使用文本文件或SQLite数据库。我发现的所有示例都以java或旧的Mono android代码结束。
该应用程序的主旨是读取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 => {});
和这个
public class Room
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Campus { get; set; }
[Unique]
public string Room_Num { get; set; }
[Unique]
public decimal Room_Latitude { get; set; }
[Unique]
public decimal Room_Longitude { get; set; }
}
我不太确定在继续部分中放入什么。此外,这是否允许我稍后从其他应用程序访问该表?感谢。
更新2:感谢Jason,我有一个有效的应用程序。我使用了内置的外部存储目录,然后可以在关闭usb调试时访问该文件。
答案 0 :(得分:2)
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组件有documentation,演示了如何在应用程序中创建和使用数据库。
string folder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
var conn = new SQLiteConnection (System.IO.Path.Combine (folder, "stocks.db"));