매개 변수화 된 SQL 삽입 쿼리를 만들었으므로 어딘가에서 실수를 범했습니다. 값이 잘 리게된다는 메시지가 계속해서 나왔기 때문에 문제 해결 중에 필요한 값 (NULL은 허용되지 않음) 만 쿼리를 축소하고 삽입 문을 완료했습니다.C#의 INSERT 문에 대한 SQL 매개 변수 정의
테이블을 확인하고 양식의 텍스트 상자에서 가져와야하는 값이 아니라 매개 변수 이름이 삽입 된 것을 확인합니다.
분명히 내 매개 변수를 잘못 호출하고 있지만 잘못된 위치를 파악할 수 없습니다. 나는 너희 모두가 나를 도울 수 있기를 바라고있다.
미리 감사드립니다.
참고 : 예, 나는 내가 INSERT
문자열에 사용하고있는 것보다 더 많은 매개 변수가 알고있다. 문제 해결에 사용 된 값을 의도적으로 줄였습니다.
다시 한번 감사드립니다! 당신의 INSERT 문에서
try {
string InsertString = @"INSERT INTO Item.Itemtable
(ItemNumber, ItemDesc, RatioToOriginalItemNumber, OriginalItemNumber, EntreeCount, ItemType, ProteinBeverage)
Values(@ItemNumberValue, '@ItemDescValue', @RatioToOriginalItemNumberValue, @OriginalItemNumberValue, @EntreeCountValue, '@ItemTypeValue', @ProteinBeverageValue)";
SqlCommand InsertNewItem = new SqlCommand(InsertString, PmixWriter);
//Define Insert Parameters
SqlParameter @ItemNumberValue = InsertNewItem.Parameters.Add("@ItemNumberValue", System.Data.SqlDbType.Int);
SqlParameter @ItemDescValue = InsertNewItem.Parameters.Add("@ItemDescValue", System.Data.SqlDbType.VarChar, 100);
SqlParameter @ItemTypeValue = InsertNewItem.Parameters.Add("@ItemTypeValue", System.Data.SqlDbType.VarChar, 100);
SqlParameter @ProteinBeverageValue = InsertNewItem.Parameters.Add("@ProteinBeverageValue", System.Data.SqlDbType.VarChar, 100);
SqlParameter @IsCouponValue = InsertNewItem.Parameters.Add("@IsCouponValue", System.Data.SqlDbType.Char, 3);
SqlParameter @EntreeCountValue = InsertNewItem.Parameters.Add("@EntreeCountValue", System.Data.SqlDbType.Real);
SqlParameter @BevCountValue = InsertNewItem.Parameters.Add("@BevCountValue", System.Data.SqlDbType.TinyInt);
SqlParameter @OriginalItemNumberValue = InsertNewItem.Parameters.Add("@OriginalItemNumberValue", System.Data.SqlDbType.Int);
SqlParameter @RatioToOriginalItemNumberValue = InsertNewItem.Parameters.Add("@RatioToOriginalItemNumberValue", System.Data.SqlDbType.TinyInt);
SqlParameter @FPBeverageCountValue = InsertNewItem.Parameters.Add("@FPBeverageCountValue", System.Data.SqlDbType.Int);
SqlParameter @FPBeverageEntreeCountValue = InsertNewItem.Parameters.Add("@FPBeverageEntreeCountValue", System.Data.SqlDbType.Int);
SqlParameter @FoodCostValue = InsertNewItem.Parameters.Add("@FoodCostValue", System.Data.SqlDbType.Money);
//Assign and covert values to the stated SQL parameters.
@ItemNumberValue.Value = Convert.ToInt32(ItemNumberBox.Text);
@ItemDescValue.Value = ItemDescBox.Text;
@ItemTypeValue.Value = ItemTypeBox.Text;
@ProteinBeverageValue.Value = ProteinBevBox.Text;
@IsCouponValue.Value = IsCouponBox.Text;
@EntreeCountValue.Value = Convert.ToInt32(EntreeCountBox.Text);
@BevCountValue.Value = Convert.ToInt32(BevCountBox.Text);
@OriginalItemNumberValue.Value = Convert.ToInt32(OriginalItemNumBox.Text);
@RatioToOriginalItemNumberValue.Value = Convert.ToInt32(RatioBox.Text);
@FPBeverageCountValue.Value = Convert.ToInt32(FPBevBox.Text);
@FPBeverageEntreeCountValue.Value = Convert.ToInt32(FPBevEntreeBox.Text);
@FoodCostValue.Value = Convert.ToDecimal(0.00);
InsertNewItem.ExecuteNonQuery();
} catch (SqlException) {
throw;
}
테이블 정의가 없으면이 질문에 답할 수 없습니다. 자르기는 아마도 db보다 필드 길이보다 긴 문자열을 저장하려고한다는 것을 나타냅니다. 예를 들어 "db"를'nvarchar (1) '에 저장하면이 경고가 나타납니다. – spender
'VarChar' 매개 변수에 전달 된 값이 선언 된 길이 인 100을 초과하지 않았습니까? 표의 열 정의와 일치합니까? – HABO