如何从文本框c#检查数据库中是否存在值

时间:2013-01-30 17:31:06

标签: c# database

好的,所以我有一个文本框和一个按钮,我将输入一个数字并按下按钮。然后我想要一个消息框来显示是否找到了值。

我将所有函数都放在一个模型类中,然后调用它们作为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 个答案:

答案 0 :(得分:1)

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

所以,你应该改为:

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

答案 1 :(得分:0)

if(textBoxRebateSlip = = model.rebateslip(ticketID)

答案 2 :(得分:0)

If语句不正确,您错过了结束语,并且比较也无效。使用==进行比较。此外,ticketID变量未在任何地方初始化。从你的描述中听起来你从文本框中得到它?如果是这样的话应该是这样的:

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

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

...

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

此外,rebateslip方法的返回类型为void,因此无效。

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

答案 3 :(得分:0)

你应该改变你的model.rebateslip方法以便它返回bool并执行你的命令,然后它应该看起来或多或少是这样的:(没有考虑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))
...