连接到SQL Server数据库

铝2110

.NET应用程序,通过该应用程序进行连接并按以下方式执行查询(包装在try-catch块中):

using (SqlConnection conn = new SqlConnection(Configuration.connectionString))
{
    SqlCommand cmd = new SqlCommand(createTransactionQuery,conn);
    conn.Open();
    return cmd.ExecuteNonQuery();
}

查询字符串为:

createTransactionQuery = "BEGIN " +
                         "BEGIN Transaction" +
                         "  BEGIN TRY " +
                         "      --variables" +
                         "      DECLARE @varStaffID int;" +
                         "      DECLARE @varProductID int;" +
                         "      SET @varStaffID = " + transaction.getStaff().getID() + ";" +
                         "      SET @varProductID = " + transaction.getProduct().getProductID() + ";" +
                         " " +
                         "      --New record in Transactions table " +
                         "      INSERT INTO Transactions (Timestamp_, CustomerID, StaffID, ProductID) " +
                         "      VALUES (SYSDATETIME(),NULL,@varStaffID,@varProductID; " +
                         " " +
                         "      --Update inventory (Products table)" +
                         "      --First retrieve the current quantity of this product" +
                         "      DECLARE @varCurrQuantity int; " +
                         "      SET @varCurrQuantity = (SELECT Quantity FROM Products WHERE ProductID=@varProductID); " +
                         "      --and update it" +
                         "      UPDATE Products " +
                         "      SET Quantity = @varQuantity-1 " +
                         "      WHERE ProductID = @varProductID; " +
                         "  END TRY " +
                         "  BEGIN CATCH " +
                         "      ROLLBACK Transaction " +
                         "  END CATCH " +
                         "COMMIT Transaction" +
                         "END";

此代码引发异常:

System.Exception:'BEGIN'附近的语法不正确。

我知道可以更好的方式创建查询字符串。但是,我想知道问题的原因是什么,因为当在SQL Server Management Studio本身中执行此确切查询时,它就会起作用。

我已确保连接字符串正确,因为它在应用程序的其他部分完全可以正常工作。

错误的Akbari

似乎您在这里缺少右括号:

VALUES (SYSDATETIME(),NULL,@varStaffID,@varProductID; " 

但是,这种字符串连接容易受到SQL Injection攻击的影响。您应该始终使用参数化查询来避免SQL注入并摆脱此类错误。

要了解如何使用参数化查询,请参见以下示例:

https://stackoverflow.com/a/50597820/2946329

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从PowerShell连接到SQL Server数据库

来自分类Dev

如何通过局域网连接到SQL Server数据库

来自分类Dev

如何将Android App连接到SQL Server数据库

来自分类Dev

SQL Server数据库连接错误

来自分类Dev

SQL Server 2008 R2无法连接到Management Studio中的本地数据库

来自分类Dev

如何使用WebMatrix中的Razor连接到SQL Server数据库并检索数据?

来自分类Dev

是否可以在不指定数据库的情况下连接到SQL Server?

来自分类Dev

SQL Server数据库连接问题

来自分类Dev

如何在C#中将SQL Server Compact Edition数据库连接到Crystal Report

来自分类Dev

无法使用JDBC连接到Sql Server数据库

来自分类Dev

如何使用客户端Windows凭据连接到Web中的SQL Server数据库

来自分类Dev

使用Tedious和Node JS无法连接到本地SQL Server数据库

来自分类Dev

使用Sequelize连接到SQL Server数据库时出错

来自分类Dev

将IntelliJ IDEA连接到SQL Server数据库

来自分类Dev

如果知道Java连接设置,则连接到SQL Server数据库

来自分类Dev

创建数据库后无法连接到Microsoft SQL Server数据库(“系统找不到指定的文件”)

来自分类Dev

无法通过Docker连接到SQL Server数据库

来自分类Dev

尝试连接到SQL Server数据库时出错

来自分类Dev

尝试连接到SQL Server数据库时出错

来自分类Dev

尝试连接到SQL Server数据库时出错

来自分类Dev

尝试连接到SQL Server数据库时出错

来自分类Dev

在线连接到SQL Server CE数据库

来自分类Dev

SQL Server数据库连接问题

来自分类Dev

连接到SQL Server;连接到同一数据库的两个网站

来自分类Dev

SQL Server连接到网络中的数据库

来自分类Dev

如果知道Java连接设置,则连接到SQL Server数据库

来自分类Dev

连接到SQL数据库

来自分类Dev

安全连接到远程 SQL Server 数据库的方法

来自分类Dev

使用 sequelize 连接到本地 SQL Server 数据库

Related 相关文章

  1. 1

    从PowerShell连接到SQL Server数据库

  2. 2

    如何通过局域网连接到SQL Server数据库

  3. 3

    如何将Android App连接到SQL Server数据库

  4. 4

    SQL Server数据库连接错误

  5. 5

    SQL Server 2008 R2无法连接到Management Studio中的本地数据库

  6. 6

    如何使用WebMatrix中的Razor连接到SQL Server数据库并检索数据?

  7. 7

    是否可以在不指定数据库的情况下连接到SQL Server?

  8. 8

    SQL Server数据库连接问题

  9. 9

    如何在C#中将SQL Server Compact Edition数据库连接到Crystal Report

  10. 10

    无法使用JDBC连接到Sql Server数据库

  11. 11

    如何使用客户端Windows凭据连接到Web中的SQL Server数据库

  12. 12

    使用Tedious和Node JS无法连接到本地SQL Server数据库

  13. 13

    使用Sequelize连接到SQL Server数据库时出错

  14. 14

    将IntelliJ IDEA连接到SQL Server数据库

  15. 15

    如果知道Java连接设置,则连接到SQL Server数据库

  16. 16

    创建数据库后无法连接到Microsoft SQL Server数据库(“系统找不到指定的文件”)

  17. 17

    无法通过Docker连接到SQL Server数据库

  18. 18

    尝试连接到SQL Server数据库时出错

  19. 19

    尝试连接到SQL Server数据库时出错

  20. 20

    尝试连接到SQL Server数据库时出错

  21. 21

    尝试连接到SQL Server数据库时出错

  22. 22

    在线连接到SQL Server CE数据库

  23. 23

    SQL Server数据库连接问题

  24. 24

    连接到SQL Server;连接到同一数据库的两个网站

  25. 25

    SQL Server连接到网络中的数据库

  26. 26

    如果知道Java连接设置,则连接到SQL Server数据库

  27. 27

    连接到SQL数据库

  28. 28

    安全连接到远程 SQL Server 数据库的方法

  29. 29

    使用 sequelize 连接到本地 SQL Server 数据库

热门标签

归档