【问题标题】:How to check in an insert into command in SQL Server using C#如何使用 C# 在 SQL Server 中签入插入命令
【发布时间】:2018-01-29 13:31:21
【问题描述】:

我有 3 个表:Student、Books 和 Borrows:

  • 学生(id、姓名、FK_borrow)
  • 图书(id、名称、nbre_books_available int)
  • 借阅(borrow_from、borrow_to、FK_student、FK_books)

我想在检查nbre_books_available列是否不为0后,将值插入到表Borrows中,并更新它。

这是我的尝试

private void fillborrow()
{
    cmd.Connection = cn;
    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "insert into borrows Values ('"+dateTimePicker1.Value+"','"+dateTimePicker2.Value+"',"+int.Parse(textBox1.Text)+","+int.Parse(textBox2.Text)+")" ;

    cn.Open();
    int a = cmd.ExecuteNonQuery();
    cn.Close();

    if (a == 0)
    { 
        MessageBox.Show("Erreur"); 
    }
    else
    {
        MessageBox.Show("Ajouter avec success"); 
    }

    cmd.CommandText = "update books set nbre_current = nbre_current - 1 where CodeO = " + int.Parse(textBox1.Text);

    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
}

我不知道如何添加检查 nbre_books_available 列是否为 0 的请求

【问题讨论】:

  • 不要连接+values+into+strings+like+that+to+make+SQL。它容易出错,并且会产生可怕的代码。始终使用 SQL 参数。请阅读How to Ask 并采取tour
  • 感谢您的评论我还没有使用 SQL 参数,但我仍在从一些教程中学习,其中大多数使用连接,是的,看起来不太好,我一定会得到进入参数
  • @tedman 你必须进入参数;它不需要太难——像“Dapper”这样的工具让它变得非常简单;没有参数:您的系统在几分钟内就可以在互联网上烤面包

标签: c# sql sql-server


【解决方案1】:

这与this本质上是同一个问题

您可以在插入的同时执行exist检查,然后检查ExecuteNonQuery()的返回值。

如果返回0则没有插入行,否则成功。

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2023-04-10
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多