0

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) 型です。

ご協力いただきありがとうございます。

4

1 に答える 1

0

上記のコードは正しいです。アプリケーションを再度コンパイルしてテストしたところ、正常に動作しました。何が問題だったのかわかりません。

于 2012-06-01T16:26:58.280 に答える