【发布时间】:2015-01-22 03:56:05
【问题描述】:
我正在制作一个连接到 MS SQL 2008 数据库的小型 C# 程序。 我有以下功能,当我使用类似的功能将新数据插入数据库时,当我想更新它时,数据库中没有任何变化。我错过了什么吗?
public bool UpdateItem(int invID, int serialNum, string catA, string catB, string itemName, int quantity,
string supplierName, float cost, float price, string comments)
{
_cmd.CommandText = "UPDATE inventory SET serialNum=@serialNum,catID=@catID,itemName=@itemName,quantity=@quantity,supplierId=@supplierId,cost=@cost,price=@price,comments=@comments WHERE invID=@invID;";
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@serialNum",serialNum);
_cmd.Parameters.AddWithValue("@catID", getCatID(catA, catB));
_cmd.Parameters.AddWithValue("@itemName",itemName);
_cmd.Parameters.AddWithValue("@quantity",quantity);
_cmd.Parameters.AddWithValue("@supplierId",GetSupplierIdByName(supplierName));
_cmd.Parameters.AddWithValue("@cost",cost);
_cmd.Parameters.AddWithValue("@price", price);
_cmd.Parameters.AddWithValue("@comments", comments);
_cmd.Parameters.AddWithValue("@invID", invID);
_con.Open();
_cmd.ExecuteNonQuery();
_con.Close();
return true;
}
这是数据库表结构
table inventory (
invID int IDENTITY(1,1) primary key,
serialNum int not null,
catID int not null,
itemName nvarchar(20) not null,
quantity int not null,
supplierId int not null,
cost real not null,
price real not null,
comments nvarchar (50),
limbo BIT,
foreign key (supplierId)
references suppliers,
foreign key (catID)
references category)
插入
public bool AddNewItem(int serialNum, int catID, string itemName, int quantity,
int supplierId, float cost, float price, string comments)
{
_cmd.CommandText =
"INSERT INTO inventory (serialNum,catID ,itemName ,quantity ,supplierId ,cost ,price ,comments ,limbo ) VALUES " +
"(@serialNum,@catID ,@itemName ,@quantity ,@supplierId ,@cost ,@price ,@comments ,@limbo );";
_cmd.Parameters.Clear();
_cmd.Parameters.AddWithValue("@serialNum", serialNum);
_cmd.Parameters.AddWithValue("@catID", catID);
_cmd.Parameters.AddWithValue("@itemName", itemName);
_cmd.Parameters.AddWithValue("@quantity", quantity);
_cmd.Parameters.AddWithValue("@supplierId", supplierId);
_cmd.Parameters.AddWithValue("@cost", cost);
_cmd.Parameters.AddWithValue("@price", price);
_cmd.Parameters.AddWithValue("@comments", comments);
_cmd.Parameters.AddWithValue("@limbo", 0);
_con.Open();
_cmd.ExecuteNonQuery();
_con.Close();
return true;
}
【问题讨论】:
-
您正在添加具有自动增量的所有值的 invID...您是否收到任何错误???
-
@POHH 没有错误,只是没有更新。你是什么意思“自动增量”
-
@GrantWinney invID 是从表中获取的,它排除了它不存在的选项。添加了插入
-
插入新项目后,是否刷新应用程序以便将新创建的 ID 附加到项目?我认为您在 UPDATE 语句中的 invID 是不正确的。您是否尝试在调用更新函数并检查 invID 的值后立即设置断点?
-
@TheShaman 在我将用于查看表格更新的 gridview 插入数据库后,新项目就在那里,它的 invID
标签: c# mysql sql-update executenonquery