Sql server 检查ID是否存在(如何改进代码)

Sql server 检查ID是否存在(如何改进代码),sql-server,vb.net,visual-studio,Sql Server,Vb.net,Visual Studio,那么我该如何改进这段代码呢?这段代码很有效,但我认为它看起来很难看 cmd = con.CreateCommand() cmd.CommandType = CommandType.Text cmd.CommandText = "SELECT COUNT(*) FROM products WHERE product_id= " & prod_idbox.Text & " " qu

那么我该如何改进这段代码呢?这段代码很有效,但我认为它看起来很难看

        cmd = con.CreateCommand()
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "SELECT COUNT(*) FROM products WHERE product_id= " & prod_idbox.Text & " "
        queryResult = cmd.ExecuteScalar()

        If queryResult = 0 Then
            cmd.CommandText = "insert into products values('" + prod_idbox.Text + "','" + prodnamebox.Text + "','" + prodtypebox.Text + "', '" + pricebox.Text + "', '" + qtybox.Text + "', '" + unitbox.Text + "')"
            cmd.ExecuteNonQuery()
            MessageBox.Show("Product Inserted")
        Else
            MessageBox.Show("Product ID already Exist")
        End If

您可以尝试插入该ID,如果它在您的数据库中定义为唯一,它将引发错误,如果捕获此错误,请打印您的MessageBox.Show(“产品ID已存在”) 大概是这样的:

try
 //insert
catch ( sql exception )
//print Product ID already Exist

这不是为什么。还有其他网站打算进行代码审查。如果你的代码做了它应该做的事情,那么你就没有问题了。我投票结束这个问题,因为没有问题要解决。规则#1-不要只计算一行是否存在。这是非常低效的。事实上,计数将花费计算行所需的资源。使用EXISTS或TOP 1。规则#2(你已经被告知)-参数化你的陈述。您有sql注入风险!现在修好它!SQL access应该参数化有很多原因。在发布之前,请确保阅读,因为有些事情在那里做得不同-例如,问题标题应该简单地说明代码的作用,因为问题总是“我如何改进它?”。确保代码正常工作;如果可能,包括单元测试。您可能会得到一些建议,让它更高效、更易于阅读、测试更好。是的,捕获异常非常有价值,但如果您想提高性能,这个解决方案应该是列表中最后一件事。异常处理确实有巨大的开销。我不知道,谢谢分享