MSFT 同期フレームワークを使用し、SQL データベースにクエリを実行する Windows Mobile アプリケーションがあります。
コードは次のとおりです。
private void buttonStart_Click(object sender, EventArgs e)
{
using (SqlCeConnection conn = new SqlCeConnection(
("Data Source=" + (Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), "Barcode.sdf") + ";Max Database Size=2047"))))
{
// Connect to the local database
conn.Open();
using (SqlCeCommand cmd = conn.CreateCommand())
{
SqlCeParameter param = new SqlCeParameter();
param.ParameterName = "@Barcode";
param.DbType = DbType.String;
param.Value = textBarcode.Text.Trim();
// SELECT rows
cmd.CommandText = "SELECT Location, Reading FROM Main WHERE Barcode LIKE @Barcode";
cmd.Parameters.Add(param);
DataTable data = new DataTable();
using (SqlCeDataReader reader = cmd.ExecuteReader())
{
data.Load(reader);
this.dataGrid1.DataSource = data;
}
}
}
}
ここに表があります:
したがって、クエリを次のように変更すると、次のようになります。
cmd.CommandText = "SELECT Location, Reading FROM Main WHERE Barcode LIKE 'NGM0001'";
正しい結果を返します。しかし、NGM0001 が textBarcode にあり、入力された場合、結果は返されません。パラメータに問題があるに違いないと私は信じています。別のソリューションで同じコード セグメントが動作していたので、何が問題なのかわかりません。
また、すべての db フィールドは nvarchar(50) 型です。
ご協力いただきありがとうございます。