2014-02-05 4 views
0

일부 데이터를 데이터베이스에 삽입하려고하는데 위에서 언급 한 오류가 발생합니다. SQL Server의이 필드에 대한 데이터 형식은 numeric (4,2)입니다. 나는 모든 종류의 솔루션을 시도했지만 제대로 작동하지 않습니다. 여기 내 코드는 다음과 같습니다.입력 문자열이 C#을 사용하여 올바른 형식 오류가 아닙니다.

또한 십진법을 사용하려고했지만이를 고치는 방법을 모르겠습니다. 감사합니다

+4

호출'ToString()'에'TextBox' 당신에게이 숫자 때 VARCHAR에로 추가하는 이유는 유용한 문자열 – SLaks

+1

를 제공하지 않습니다? – Romoku

답변

0

내가 해결책을 발견 괜찮에 대한 몇 가지 검사를 추가하는 것이 좋습니다.

if (string.IsNullOrEmpty(Hours.Text)) 
        cmd.Parameters.AddWithValue("@HOURS", DBNull.Value); 
       else 
        cmd.Parameters.AddWithValue("@HOURS", decimal.Parse(Hours.Text)); 
+0

decimal.Parse가 코드를 충돌시킵니다. – Steve

2

당신은 유형이 숫자라고하지만 varchar 매개 변수를 추가하려고합니다. 당신이 매개 변수를 추가하는 방법

시도를 변경 :

cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(ID.Text)); 
cmd.Parameters.AddWithValue("@HOURS", Convert.ToInt32(Hours.Text)); 
1

당신을 위해이 일을합니까?

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)); 
+0

여전히이 오류가 발생합니다. 입력 문자열의 형식이 올바르지 않습니다. – moe

+0

@moe 당신은 어느 선에서 그것을 얻습니까? – Marek

+0

당신이 말한 마지막 줄 : Decimal.Parse ((Hours.Text) – moe

2

매개 변수에 정수를 전달하려면 인스턴스 변수가 아니라 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; 
} 
+0

시도했습니다. 작동하지 않음 – moe

+0

시간 텍스트 상자에 포함 된 값 – Steve

+0

백 엔드의 데이터 형식이 숫자 (4,2)이고 25 또는 45와 같이 입력했습니다. – moe

관련 문제