일부 데이터를 데이터베이스에 삽입하려고하는데 위에서 언급 한 오류가 발생합니다. SQL Server의이 필드에 대한 데이터 형식은 numeric (4,2)입니다. 나는 모든 종류의 솔루션을 시도했지만 제대로 작동하지 않습니다. 여기 내 코드는 다음과 같습니다.입력 문자열이 C#을 사용하여 올바른 형식 오류가 아닙니다.
또한 십진법을 사용하려고했지만이를 고치는 방법을 모르겠습니다. 감사합니다
일부 데이터를 데이터베이스에 삽입하려고하는데 위에서 언급 한 오류가 발생합니다. SQL Server의이 필드에 대한 데이터 형식은 numeric (4,2)입니다. 나는 모든 종류의 솔루션을 시도했지만 제대로 작동하지 않습니다. 여기 내 코드는 다음과 같습니다.입력 문자열이 C#을 사용하여 올바른 형식 오류가 아닙니다.
또한 십진법을 사용하려고했지만이를 고치는 방법을 모르겠습니다. 감사합니다
내가 해결책을 발견 괜찮에 대한 몇 가지 검사를 추가하는 것이 좋습니다.
if (string.IsNullOrEmpty(Hours.Text))
cmd.Parameters.AddWithValue("@HOURS", DBNull.Value);
else
cmd.Parameters.AddWithValue("@HOURS", decimal.Parse(Hours.Text));
decimal.Parse가 코드를 충돌시킵니다. – Steve
당신은 유형이 숫자라고하지만 varchar 매개 변수를 추가하려고합니다. 당신이 매개 변수를 추가하는 방법
시도를 변경 :
cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(ID.Text));
cmd.Parameters.AddWithValue("@HOURS", Convert.ToInt32(Hours.Text));
당신을 위해이 일을합니까?
object Hours = DBNull.Value;
Hours = row.FindControl("Hrs") as TextBox;
cmd.CommandText = "insert into myTable (ID, HOURS) values (@ID, @HOURS) ";
cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID.Text;
cmd.Parameters.Add("@HOURS", SqlDbType.Decimal).Value = Decimal.Parse((Hours.Text));
매개 변수에 정수를 전달하려면 인스턴스 변수가 아니라 TextBox의 Text 속성을 변환해야합니다. ToString을 The Hours TextBox로 호출하면 System.Windows.Forms.TextBox
이 반환되고 물론 정수로 변환 될 수는 없습니다.
물론 매개 변수 유형은 SqlDbType.Int
해야하지 포함 된 VARCHAR
TextBox Hours = row.FindControl("Hrs") as TextBox;
cmd.CommandText = "insert into myTable (ID, HOURS) values (@ID, @HOURS) ";
cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID.Text;
cmd.Parameters.Add("@HOURS", SqlDbType.Int).Value = Convert.ToInt32(Hours.Text);
필드 시간 진수 값 (4,2)는 다음 진수 형식 매개 변수를 만들 필요가 기대합니다. 또한 내가 입력 상자
decimal hourValue;
if(!decimal.TryParse(Hours.Text, out hourValue)
// Message to the user that he/she has typed an invalid number
else
{
TextBox Hours = row.FindControl("Hrs") as TextBox;
cmd.CommandText = "insert into myTable (ID, HOURS) values (@ID, @HOURS) ";
cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID.Text;
cmd.Parameters.Add("@HOURS", SqlDbType.Decimal).Value = hourValue;
}
호출'ToString()'에'TextBox' 당신에게이 숫자 때 VARCHAR에로 추가하는 이유는 유용한 문자열 – SLaks
를 제공하지 않습니다? – Romoku