繁体   English   中英

如何检查SQL Server表中是否存在行?

[英]How to check if a row is present in SQL Server table or not?

我正在尝试检查SQL Server表中是否存在行。

如果该行存在(在特定的TicketID ),它应该显示一个消息框,由于数据库中已有条目,因此无法继续进行。 但如果没有,它应该插入一些记录(在特定的TicketID )。

我试过尝试捕获但是无法做到:

这是查询代码ticketID例如硬编码的ticketID

bool no;

try
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ST"].ConnectionString.ToString());
    con.Open();
    cmd.CommandText = "SELECT EngineerVisited from tblTicketTechnical where TicketID=1";
    cmd.Connection = con;
    rdr = cmd.ExecuteReader();

    while (rdr.Read())
    {
        bool = rdr.GetBoolean(0);
    }

    con.Close();
}
catch
{
    MessageBox.Show("Cannot continue");
}

如果有人可以建议一个函数,如果找到行,该函数将返回true,否则返回false,我将不胜感激。

您应该在代码中遵循与您用英语说明的逻辑相同的逻辑:如果已经有票证显示消息,如果没有,则插入一些数据。

var checkQuery = "SELECT COUNT(*) FROM tblTicketTechnical where TicketID=1";
var command = new OleDbCommand(checkQuery, con);

con.Open();
int count = (int)command.ExecuteScalar();

if(count > 0)
{
    //Already exists, show message
}
else
{
    var insertQuery = "INSERT INTO tblTicketTechnical(col1, col2) VALUES('val1', val2')";
    con = new OleDbCommand(insertQuery, con);
    con.ExecuteNonQuery();
}

请注意,这是写在我脑海中而未经过测试。 我也没有实现异常处理。 这只是为了展示如何执行您想要实现的目标的逻辑。

您可以使用HasRows财产SQLDataReader

只有在代码抛出exception才会执行catch块。 这里根本没有发生。

代替Try / Catch使用if语句并检查您的查询结果。

像这样创建过程和代码

IF NOT EXISTS (SELECT 1 FROM youtable WHERE id= @id)
   BEGIN
      RAISERROR ('Record Exists', 16, 2)
   END
ELSE
   Begin
      INSERT INTO YOURTABEL(COLUM1,COLUM2) VALUES(VALUE1, VALUE2)
   END

然后通过try catch您可以向用户显示消息

您可以使用DataTableReader.HasRows属性

The HasRows property returns information about the current result set

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM