0

アクセスデータベースから別の形式のテキストボックスにデータを表示する以下のコードがあります。

item items = new item();
Add_Order addorder = new Add_Order();
OleDbCommand cmd = new OleDbCommand("Select * from tblItems WHERE ItemName = @Item", connection);
cmd.Parameters.AddWithValue("@Item", items.ItemName1);
cmd.Connection = connection;
connection.Open();

cmd.ExecuteNonQuery();
cmd.Parameters.AddWithValue("@ItemID", addorder.tbItemID.Text);
cmd.Parameters.AddWithValue("@ItemName", addorder.tbName.Text);
cmd.Parameters.AddWithValue("@ItemPrice", addorder.tbPrice.Text);
OleDbDataReader read = cmd.ExecuteReader();
while (read.Read())
{
    addorder.tbItemID.Text = read[0].ToString();
    addorder.tbName.Text = read[1].ToString();
    addorder.tbPrice.Text = read[2].ToString();
}
addorder.ShowDialog();
connection.Close();

エラーはそれを言います

パラメータ@Itemにはデフォルト値がありません

@Itemしかし、私はすでにこの行での値を割り当てました

cmd.Parameters.AddWithValue("@Item", items.ItemName1);
4

3 に答える 3

2

いくつかの間違いを見つけました。いくつかのアイテムを取得しています。次に、ExecuteNonquery() およびその他のパラメーターを使用している理由。これを試してみてください

cmd.Connection = connection;
connection.Open();
OleDbCommand cmd = new OleDbCommand("Select * from tblItems WHERE ItemName = @Item", connection);
cmd.Parameters.AddWithValue("@Item", items.ItemName1);

OleDbDataReader read = cmd.ExecuteReader();
while (read.Read())
{
addorder.tbItemID.Text = read[0].ToString();
addorder.tbName.Text = read[1].ToString();
addorder.tbPrice.Text = read[2].ToString();
}
connection.Close();

items.ItemName1 に有効なエントリがあることを確認してください。いくつかの値を手動で渡すだけで、これを確認できます。

cmd.Parameters.AddWithValue("@Item", "some text");
于 2013-03-19T06:16:18.423 に答える
1

これを試してください:

cmd.Parameters.AddWithValue("@Item", OleDbType.VarChar).Value = items.ItemName1;

そして、なぜあなたはExecuteNonQuery()..の後にこれを再び使用しているのですか?

cmd.Parameters.AddWithValue("@ItemID", addorder.tbItemID.Text);
cmd.Parameters.AddWithValue("@ItemName", addorder.tbName.Text);
cmd.Parameters.AddWithValue("@ItemPrice", addorder.tbPrice.Text);
于 2013-03-19T06:15:20.203 に答える
0
cmd.Parameters.Add(new OleDbParameter("item", OleDbType.VarChar, 32,  "Item").Value = items.ItemName1;
                   ^^^^^^^^^^^^^^^^^^

重要なのはParameter()を構築することです

于 2013-03-19T06:22:51.713 に答える