我正在嘗試向位於我的SQL數據庫中的設備表添加一個新項。我正在使用3層架構。這種特定的添加方法使用兩個組合框,其顯示成員已設置,其值元素設置爲各自字段的ID。向sql表添加新項時出錯
我收到錯誤:「輸入字符串的格式不正確」當我按下添加新設備按鈕時(所有項目已輸入到文本框中,並且已從組合框中選擇了值。我不知道它是從哪裏正在添加,我的想法是,它是從組合框的到來。
我的裝備表包含6行。
1.EquipmentNo INT自動編號 2.EquipmentDesc nvarchar的 3.SerialNo爲nvarchar我的分類表的fk 5.VenueID INT(我的地點表的FK)
我的地點表中有一個VenueID(自動編號)和RoomNumber(串) 我的分類表中有一個類別ID(硬的硬件和軟軟件)和Desription(硬件和軟件)
我的業務層包含以下代碼:
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的不是顯示的文字。
謝謝你的幫助
好兩兩件事:手動在數據庫中運行相同的查詢,使用相同的價值觀,並確保它運行其次:'Convert.ToInt32(cmbVenues.ValueMember))'......我會把它改成一個'int.TryParse' ...以確保它實際上是一個你正在處理的int。 – Arran