2

Sql 命令构造

我已经按如下方式构建了 Sql 命令:

    string _InsertVehicleQuery = "INSERT INTO VSI_VehicleRecords(StockNumber,Status,Make,Model,Colour,Spefication) VALUES (@StockNumber, @Status, '@Make', '@Model', '@Colour', '@Specification');";

    SqlCommand _InsertVehicleCommand = new SqlCommand(_InsertVehicleQuery);
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@StockNumber", __StockNumber));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Status", __Status));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Make", Make));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Model", Model));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Colour", Colour));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Specification", Specification));

Sql 命令执行

    //Method call
    DataUtility.NonQuery(_InsertVehicleCommand);

    //Method structure
    public static void NonQuery(SqlCommand Command)
    {
        Command.Connection = __Connection;

        OpenConnection();
        Command.ExecuteNonQuery();
        CloseConnection();
    }

在 SQL 查询的执行或构造中,我没有做任何明显的事情。我在数据库表中得到的结果:

VehicleRecordID StockNumber Status  Make    Model   Colour  Spefication
1                 -1            0   @Make   @Model  @Colour @Specification

在此先感谢您的任何解决方案,也欢迎任何建议!

4

4 回答 4

4

参数名称不应在VALUES列表中使用单引号,因为它们将被解释为字符串文字。

于 2012-08-26T17:33:13.237 回答
2

不要在参数周围加上引号,即

... (@StockNumber, @Status, @Make, @Model, @Colour, @Specification);"; 

代替

... (@StockNumber, @Status, '@Make', '@Model', '@Colour', '@Specification');"; 

此外,您可以使用 AddWithValue

_InsertVehicleCommand.Parameters.AddWithValue("@Make", Make);  

代替

_InsertVehicleCommand.Parameters.Add(new SqlParameter("@Make", Make));  
于 2012-08-26T17:33:12.317 回答
1

不要在参数周围加上“@parameter”

string _InsertVehicleQuery = "INSERT INTO VSI_VehicleRecords(StockNumber,Status,Make,Model,Colour,Spefication) VALUES (@StockNumber, @Status, @Make, @Model, @Colour, @Specification);";

    SqlCommand _InsertVehicleCommand = new SqlCommand(_InsertVehicleQuery);
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@StockNumber", __StockNumber));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Status", __Status));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Make", Make));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Model", Model));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Colour", Colour));
    _InsertVehicleCommand.Parameters.Add(new SqlParameter("@Specification", Specification));
于 2012-08-26T17:34:12.703 回答
0

从参数定义中删除@字符和引号'

然后设置每个参数添加的Value属性

新的 SqlParameter("StockNumber", __StockNumber).Value = value;

于 2012-08-26T17:34:20.410 回答