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