我正在尝试根据Xamarin Android C#中的一个参数返回数据。我已经让下面的代码在拉回所有数据时工作,但是我需要使用SQLite WHERE查询来返回特定的数据。
我需要使用AutoCompleteTextView字段中的值作为参数。
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
//ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
SetContentView(Resource.Layout.Main);
db = new DBHelper(this);
sqliteDB = db.WritableDatabase;
container = FindViewById<LinearLayout>(Resource.Id.container);
var btnEmergencyServices = FindViewById<Button>(Resource.Id.btnEmergencyServices);
btnEmergencyServices.Click += btnEmergencyServices_onClick;
}
private void EmergencyServicesData()
{
ICursor selectData = sqliteDB.RawQuery("select POLICE, FIRE, MEDICAL from EmergencyServices WHERE COUNTRY = @Country", new string[] { });
if (selectData.Count > 0)
{
selectData.MoveToFirst();
do
{
EmergencyServices emergencyServices = new EmergencyServices();
emergencyServices.POLICE = selectData.GetString(selectData.GetColumnIndex("POLICE"));
emergencyServices.FIRE = selectData.GetString(selectData.GetColumnIndex("FIRE"));
emergencyServices.MEDICAL = selectData.GetString(selectData.GetColumnIndex("MEDICAL"));
EmergencyServices.Add(emergencyServices);
}
while (selectData.MoveToNext());
selectData.Close();
}
foreach (var item in EmergencyServices)
{
LayoutInflater layoutInflater = (LayoutInflater)BaseContext.GetSystemService(Context.LayoutInflaterService);
View addView = layoutInflater.Inflate(Resource.Layout.EmergencyServices, null);
TextView txtPolice = addView.FindViewById<TextView>(Resource.Id.txtPolice);
TextView txtFire = addView.FindViewById<TextView>(Resource.Id.txtFire);
TextView txtMedical = addView.FindViewById<TextView>(Resource.Id.txtMedical);
txtPolice.Text = item.POLICE;
txtFire.Text = item.FIRE;
txtMedical.Text = item.MEDICAL;
container.AddView(addView);
}
}
发布于 2018-06-17 06:47:29
如何在查询中使用参数?
假设您使用的是一个Sqlite net包变体(我使用的是sqlite-net-pcl
),您将创建一个带有参数的字符串数组,其顺序为,它们将在SQL查询中被替换(通过?
标记)。
在这个示例中,直接从我的一个应用程序中提取,在方法中传递了两个参数,一个string
和一个bool
。
需要转换0
或1
的字符串表示,因为布尔值在SQLite中存储为整数。
另一个修剪了空格,并在字符串的开头和结尾添加了SQL string通配符%
。
我用这两个变量创建了一个字符串数组,我的SQL语句包含两个?
,它们将按照在SQL查询语句中的左、二、右顺序被这些参数替换。
示例
public async Task<IList<Package>> DbGetSearchedPackagesAsync(string constraint, bool isUserApp = true)
{
var param1 = Convert.ToInt32(isUserApp).ToString();
var param2 = $"%{constraint.Trim()}%";
var packages = await conn.QueryAsync<Package>("SELECT * FROM Package WHERE UserApp = ? AND Name LIKE ? ORDER BY Name COLLATE NOCASE ASC;", new string[2] { param1, param2 });
return packages;
}
https://stackoverflow.com/questions/50891765
复制相似问题