我试图从C#winforms应用程序简单地将数据插入到SQL Server的表中。
目前执行查询时我收到错误:
' soAddItems'
附近的语法不正确
以下是处理我的数据库CRUD操作的类的insert
代码:
注意:作为测试数据:
代码:
public virtual void AddItem(string itemName, string skuNo, double itemPrice, int stockAmountToAdd, string itemPic)
{
using (SqlConnection open = new SqlConnection(connectionString))
{
SqlCommand insertCommand = new SqlCommand("soAddItems", open);
open.Open();
insertCommand.Parameters.Add("@itemName", SqlDbType.NChar).Value = itemName;
insertCommand.Parameters.Add("@skuNo", SqlDbType.VarChar).Value = skuNo;
insertCommand.Parameters.Add("@itemPrice", SqlDbType.Decimal).Value = itemPrice;
insertCommand.Parameters.Add("@instockAmount", SqlDbType.BigInt).Value = stockAmountToAdd;
insertCommand.Parameters.Add("@lastSold", SqlDbType.DateTime).Value = DateTime.Today;
insertCommand.Parameters.Add("@itemPic", SqlDbType.NChar).Value = itemPic;
//***** Error on the execute*****
insertCommand.ExecuteNonQuery();
};
}
SQL Server存储过程:
ALTER PROC [dbo].[soAddItems]
@itemName nchar,
@skuNo varchar,
@itemPrice float,
@instockAmount bigint,
@lastSold dateTime,
@itemPic varchar
AS
BEGIN
INSERT INTO items (itemName, skuNo, itemPrice, instockAmount, lastSold, itemPic)
VALUES (@itemName, @skuNo, @itemPrice, @instockAmount, @itemPic)
END
谁能告诉我哪里出错?
答案 0 :(得分:2)
您需要将SqlCommand
命令类型告知存储过程。
试试这个:
insertCommand.CommandType = CommandType.StoredProcedure;
答案 1 :(得分:1)
您似乎忘了分配SqlCommand.CommandType
财产。
因为默认为Text
。
insertCommand.CommandType = CommandType.StoredProcedure;
答案 2 :(得分:0)
除了缺少CommandType.StoredProcedure
之外,你还有第二个主要缺陷:如果你定义一个这样的参数:@skuNo varchar
- 那么你得到一个 1个字符长度的字符串!
这通常不是您想要的 - 在T-SQL中定义参数和变量时,总是指定长度!
使用:@skuNo varchar(50)
或您需要的任何长度