C# 使用xamarin Android&C从SQLite检索数据?
我有一个类,它从用户的设备获取经度和纬度,并将其保存到SQLite数据库。代码如下:C# 使用xamarin Android&C从SQLite检索数据?,c#,sqlite,xamarin.android,C#,Sqlite,Xamarin.android,我有一个类,它从用户的设备获取经度和纬度,并将其保存到SQLite数据库。代码如下: [Activity(Label = "GetLocation")] public class GetLocation : Activity, ILocationListener { Button btncreate; EditText txtlong; EditText txtlat; static readonly string TAG = "X:" + typeof
[Activity(Label = "GetLocation")]
public class GetLocation : Activity, ILocationListener
{
Button btncreate;
EditText txtlong;
EditText txtlat;
static readonly string TAG = "X:" + typeof(GetLocation).Name;
Location _currentLocation;
LocationManager _locationManager;
string _locationProvider;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.GetLocation);
txtlong = FindViewById<EditText>(Resource.Id.txtlong);
txtlat = FindViewById<EditText>(Resource.Id.txtlat);
btncreate = FindViewById<Button>(Resource.Id.btnvalidate);
btncreate.Click += Btncreate_Click;
InitializeLocationManager();
}
void InitializeLocationManager()
{
_locationManager = (LocationManager) GetSystemService(LocationService);
Criteria criteriaForLocationService = new Criteria
{
Accuracy = Accuracy.Fine
};
IList<string> acceptableLocationProviders = _locationManager.GetProviders(criteriaForLocationService, true);
if (acceptableLocationProviders.Any())
{
_locationProvider = acceptableLocationProviders.First();
}
else
{
_locationProvider = string.Empty;
}
Log.Debug(TAG, "Using " + _locationProvider + ".");
}
public void OnProviderDisabled(string provider) { }
public void OnProviderEnabled(string provider) { }
public void OnStatusChanged(string provider, Availability status, Bundle extras) { }
protected override void OnResume()
{
base.OnResume();
_locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
}
protected override void OnPause()
{
base.OnPause();
_locationManager.RemoveUpdates(this);
}
public void OnLocationChanged(Location location)
{
_currentLocation = location;
if (_currentLocation == null)
{
txtlong.Text = "Unable to determine your location. Try again in a short while.";
txtlat.Text = "Unable to determine your location. Try again in a short while.";
}
else
{
txtlong.Text = _currentLocation.Longitude.ToString();
txtlat.Text = _currentLocation.Latitude.ToString();
}
}
private void Btncreate_Click(object sender, EventArgs e)
{
try
{
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Location.db3");
var db = new SQLiteConnection(dpPath);
db.CreateTable<DataTable>();
DataTable tbl = new DataTable();
tbl.Longitude = txtlong.Text;
tbl.Latitude = txtlat.Text;
db.Insert(tbl);
NextPage();
Toast.MakeText(this, "Data Store Successfully...,", ToastLength.Short).Show();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
}
}
void NextPage()
{
//code to get next page
}
}
一旦它保存了数据,我希望另一个类活动能够在单独的.axml页面上显示它。我的问题是我是一名培训学院的程序员,不知道该做什么。非常感谢您的帮助。您需要使用
StartActivity(typeof(Activity2));
在Activity2的OnCreate中,设置新的.axml布局:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.MyView);
}
然后使用查询检索数据:
我建议您阅读,如果您想改进,请将所有关于SQLite的内容移动到另一个类,以重用打开SQLite连接的代码。另外,如果您可以使用异步调用,以防止在数据库中持久化数据时阻塞UI
还要检查这是否真的有用
HIH请出示您的数据表。编辑你的问题并把它放进去。我很困惑?您好,我需要为.axml文件添加一些特定的内容吗?当然,因为当活动加载时,我会得到一个空白页。您需要在axml中对活动进行布局。如果它很简单,你可以在设计师的帮助下显示它。
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.MyView);
}
string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Location.db3");
var db = new SQLiteConnection(dpPath);
var dataTables = db.Query<DataTable>("select * from DataTable");