检查数组 C# 中是否存在 int
本文关键字:存在 int 是否 数组 检查 | 更新日期: 2023-09-27 18:34:54
我不知道这是否是正确的方法,但我正在尝试从数据库表中获取所有作业编号并检查用户输入的内容是否在数据库中。我通过将所有数据发送到数组并检查它是否存在于其中来做到这一点。但是我相信会有更简单的方法。这是我到目前为止的代码:
public class IDNo
{
public int Col1 { get; set; }
}
private void button3_Click(object sender, EventArgs e)
{
String check = "SELECT * FROM Job";
using (SqlConnection con = new SqlConnection(str))
{
using (SqlCommand cmd = new SqlCommand(check, con))
{
con.Open();
var listOfId = new List<IDNo>();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var id = new IDNo();
id.Col1 = Convert.ToInt32(reader["JobNo"]);
listOfId.Add(id);
}
}
string JN = textBox10.Text;
int JoNo = Int32.Parse(JN);
if (JoNo == IDNo)
{
MessageBox.Show("No job number found, please try again!");
}
else
{
DO SOMETHING HERE WHEN CORRECT
}
}
}
}
我只是想得到一些关于如何检查数组中是否存在用户输入的数字的帮助。
数据库引擎应该回答你的问题,而不是简单地把你所有的作业记录还给你,并强制你的代码通过一个可能的、非常冗长的搜索你的记录中的匹配数据......
int JoNo;
if(!Int32.TryParse(textBox10.Text, out JoNo))
{
MessageBox.Show("Not a valid number");
return;
}
String check = @"IF EXISTS( SELECT 1 FROM Job WHERE JobNo=@num)
SELECT 1 ELSE SELECT 0";
using (SqlConnection con = new SqlConnection(str))
using (SqlCommand cmd = new SqlCommand(check, con))
{
con.Open();
cmd.Parameters.Add("@num", SqlDbType.Int).Value = JoNo;
int result = (int)cmd.ExecuteScalar();
if(result == 0)
MessageBox.Show("No job number found, please try again!");
else
.....
}
首先,测试用户输入是否为有效数字,而不引发异常 (Int32.TryParse(,而只是通知用户错误,然后生成 IF EXISTS 查询,因为您只想知道作业编号是否存在,并且不需要检索该值。最后,执行是使用 ExecuteScalar 完成的,因为您只对获取单个值 1(对于现有的 JobNo 或 0 对于不存在的 JobNo(感兴趣。
您可以使用用户发送的 jobNo 作为数据库中搜索查询的输入参数。因此,您可以简单地使用查询来执行此操作:
SqlCommand check = new SqlCommand("SELECT * FROM Job where JobNo = @JobNo" , conn);
check.Parameters.AddWithValue("@JobNo", id.Text);
int exists = (int)check.ExecuteScalar();
if(exists > 0)
{
//job no exist
}
else
{
//job no doesn't exist.
}