0

好的,所以我有一个文本框和一个按钮,我将在其中输入一个数字并按下按钮。然后,如果已找到该值,我希望显示一个消息框。

我将所有函数都放在模型类中,然后为 GUI 部分调用它们。这是我尝试过的 sql 函数(ticket 是表的名称,ID 是我试图查找的值):

  public void rebateslip(int ticketID)
    {
        SqlCommand myCommand  = new SqlCommand("SELECT ID FROM ticket WHERE ID = @ticketID", con);
        SqlDataAdapter sqlDa = new SqlDataAdapter(myCommand);

        myCommand.Parameters.AddWithValue("@ID", ticketID);


    }

而对于按钮事件处理程序,我有这个:

 private void buttonPrintRebateSlip_Click(object sender, EventArgs e)
    {

            if (textBoxRebateSlip = model.rebateslip(ticketID)
            {
                MessageBox.Show("Found ticket");
            }
            else
            {
                MessageBox.Show("Ticket not in database");
            }

    }

但它说ticketID不存在

4

4 回答 4

1

您的参数名为ticketID,而不是ID

因此,您应该更改为:

 myCommand.Parameters.AddWithValue("@ticketID", ticketID);
于 2013-01-30T17:32:59.367 回答
0

if (textBoxRebateSlip = = model.rebateslip(ticketID)

于 2013-01-30T17:36:20.880 回答
0

If 语句不正确,您缺少右括号,并且比较也无效。使用 == 进行比较。此外,ticketID 变量不会在任何地方初始化。从您的描述中听起来您是从文本框中获取的?如果是这样,它应该是这样的:

int id = Convert.ToInt32(textBoxRebateSlip .Text);

if (model.rebateslip(ticketID) == id)

...

我注意到的另一件事是,您没有在任何地方执行 sql 命令?

此外,rebateslip 方法的返回类型为 void,因此它不起作用。

由于所有这些错误,这段代码甚至无法编译。

于 2013-01-30T17:41:51.457 回答
0

您应该更改您的model.rebateslip方法,使其返回 abool并执行您的命令,然后它应该或多或少看起来像这样:(没有想到 SqlCommand 方法,也没有读者的方法,但根据我的记忆,它看起来像这)

public bool rebateslip(int ticketID)
{
    SqlCommand myCommand  = new SqlCommand("SELECT ID FROM ticket WHERE ID = @ticketID", con);
    SqlDataAdapter sqlDa = new SqlDataAdapter(myCommand);

    myCommand.Parameters.AddWithValue("@ticketID", ticketID);
    var reader = myCommand.Execute();
    return reader.HasRows;    
}

那么你应该像@Ezekiel在他的回答中所说的那样做:

int id;
if (!int.TryParse(textBoxRebateSlip.Text, out id)) return;

if (model.rebateslip(id))
...
于 2013-01-30T17:46:46.767 回答