我正在尝试向位于我的 SQL 数据库中的设备表中添加一个新项目。我正在使用 3 层架构。这个特殊的 add 方法使用两个组合框,它们的显示成员设置和它们的值成员设置为各自字段的 ID。
当我按下添加新设备按钮时,我收到错误消息:“输入字符串的格式不正确”(在所有项目都输入到文本框并且选择了组合框中的值之后。我不确定在哪里它来自,我的想法是它来自组合框。
我的设备表包含 6 行。
1.EquipmentNo int autonumber 2.EquipmentDesc nvarchar 3.SerialNo nvarchar 4.Barcode nvarchar 5.CategoryID nvarchar(我的 Category 表的 fk) 5.VenueID int(我的 Venue 表的 fk)
我的 Venue 表有一个 VenueID(自动编号)和一个 RoomNumber(字符串)我的 Category 表有一个 CategoryID(硬件为硬,软件为软)和描述(硬件和软件)
我的业务层包含以下代码:
public int AddEquipment(Equipment eq)
{
if (dbConn.State == ConnectionState.Closed)
{
dbConn.Open();
}
string sqlInsert = "sp_AddNewEquipment '" + eq.EquipmentDescription + "' , '" + eq.SerialNo + "' , '" + eq.Barcode + "' , '" + eq.CategoryID + "' , '" + eq.VenueID + "'";
dbCmd = new SqlCommand(sqlInsert, dbConn);
int x = dbCmd.ExecuteNonQuery();
return x;
}
我的存储过程如下:
ALTER PROCEDURE [dbo].[sp_AddnewEquipment]
-- Add the parameters for the stored procedure here
@EquipmentNo bigint,
@EquipmentDescription nvarchar(50),
@SerialNo nvarchar(50),
@Barcode bigint,
@CategoryID nvarchar(50),
@VenueID int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO Equipment(EquipmentNo, EquipmentDescription, Barcode, SerialNo, CategoryID, VenueID)
VALUES(@EquipmentNo, @EquipmentDescription, @Barcode, @SerialNo, @CategoryID, @VenueID)
END
这是我在 btnAdd_Click 方法中的表单代码:
Equipment eq = new Equipment(txtDescription.Text, txtSerialNo.Text, txtBarcode.Text, cmbCategory.ValueMember.ToString(), Convert.ToInt32(cmbVenues.ValueMember));
eq.AddNewEquipment();
我的组合框填充了页面加载方法:
//loading of category combobox
cmbCategory.DataSource = c.GetAllCategories();
cmbCategory.DisplayMember = "Description";
cmbCategory.ValueMember = "Category ID";
//Loading of venue combobox
cmbVenues.DataSource = v.GetAllVenues();
cmbVenues.DisplayMember = "Room Number";
cmbVenues.ValueMember = "VenueID";
我想返回两个组合框的 ID,而不是显示的文本。
谢谢你的帮助