2012-06-13 4 views
0

이것은 격자보기에서 내 업데이트를위한 coe입니다. 편집 명령이 제대로 작동하지만 업데이트를 클릭하면이 오류가 내 cmd.ExecuteNonQuery() 옆에 나타납니다. "매개 변수 값을 문자열에서 10 진수로 변환하지 못했습니다." 제게 나를 도울 수 있습니다. 나를 위해 데이터베이스 plz에 세부 사항을 추가하는 또 다른 방법이 있다면 미리 감사드립니다. :) 소수에격자보기 업데이트 오류

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    string v = System.Configuration.ConfigurationManager.ConnectionStrings["harish"].ConnectionString; 
    con = new OracleConnection(v); 
    con.Open(); 


    string query = "update leave_module1 set name=:name,desig=:desig,srno=:srno,tol=:tol,compdates=:compdates,fd=:fd,td=:td,noofdays=:nod,remarks=:remarks"; 
    OracleCommand cmd = new OracleCommand(query, con); 
     cmd.Parameters.Add(":name", OracleType.VarChar, 50).Value = GridView1.Rows[e.RowIndex].Cells[0].Text; 
     cmd.Parameters.Add(":desig", OracleType.VarChar, 30).Value = GridView1.Rows[e.RowIndex].Cells[1].Text; 
     cmd.Parameters.Add(":srno", OracleType.Number, 8).Value = GridView1.Rows[e.RowIndex].Cells[2].Text; 
     cmd.Parameters.Add(":tol", OracleType.VarChar, 10).Value = GridView1.Rows[e.RowIndex].Cells[3].Text; 
     cmd.Parameters.Add(":compdates", OracleType.VarChar, 30).Value = GridView1.Rows[e.RowIndex].Cells[4].Text; 
     cmd.Parameters.Add(":fd", OracleType.DateTime).Value = GridView1.Rows[e.RowIndex].Cells[5].Text; 
     cmd.Parameters.Add(":td", OracleType.DateTime).Value = GridView1.Rows[e.RowIndex].Cells[6].Text; 
     cmd.Parameters.Add(":nod", OracleType.Number, 3).Value = GridView1.Rows[e.RowIndex].Cells[7].Text; 
     cmd.Parameters.Add(":remarks", OracleType.VarChar, 50).Value = GridView1.Rows[e.RowIndex].Cells[8].Text; 

     cmd.ExecuteNonQuery(); 
     ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('The Data has been added');window.location='Default2.aspx';</script>;"); 


     cmd.Dispose(); 
     con.Close();  
} 

답변

0
  • 명명 된 매개 변수 앞에 콜론 (:)을 사용하지 마십시오. Oracle 용 .NET Framework 데이터 공급자는 자동으로 콜론을 제공합니다. 관련 유형
  • 변환 매개 변수 여기

    사용 Using block 매개 변수

    cmd.Parameters.Add("name", OracleType.VarChar, 50).Value = GridView1.Rows[e.RowIndex].Cells[0].Text; // this is ok 
    cmd.Parameters.Add("fd", OracleType.DateTime).Value = Convert.ToDateTime(GridView1.Rows[e.RowIndex].Cells[5].Text); 
    cmd.Parameters.Add("nod", OracleType.Number, 3).Value = Convert.ToDecimal(GridView1.Rows[e.RowIndex].Cells[7].Text); 
    
  • 에 할당하기 전에 나중에 DateTime``의 샘플 코드를

    using (var connection = new OracleConnection(connectionString)) 
    { 
        connection.Open(); 
        using (var command = new OracleCommand(queryString, connection)) 
        { 
         // add parameters here 
         command.ExecuteNonQuery(); 
        } 
    
    } 
    
+0

: 이제이 오류가 발생합니다. "문자열이 유효한 DateTime으로 인식되지 않습니다." – Huga

+0

날짜 필드로 가져 오는 값은 무엇입니까? 형식을 알고있는 경우 DateTime.ParseExact (dateTo, "mm/dd/yyyy ", CultureInfo.InvariantCulture); – Damith

0

변환 문자열 : 날짜에

cmd.Parameters.Add(":srno", OracleType.Number, 8).Value = Convert.ToDecimal(GridView1.Rows[e.RowIndex].Cells[2].Text); 
    cmd.Parameters.Add(":nod", OracleType.Number, 3).Value = Convert.ToDecimal(GridView1.Rows[e.RowIndex].Cells[7].Text); 

변환 문자열 : 하나가 비어있는 경우 문자열 값이 비어 있지 않은 경우 변환하기 전에

cmd.Parameters.Add(":fd", OracleType.DateTime).Value = DateTime.Parse(GridView1.Rows[e.RowIndex].Cells[5].Text); 
    cmd.Parameters.Add(":td", OracleType.DateTime).Value = DateTime.Parse(GridView1.Rows[e.RowIndex].Cells[6].Text); 

는 확인 기본 10 진수/datetime 값을 할당하십시오.

+0

흠을 너무 :) – V4Vendetta

+0

@ V4Vendetta : 입력 문자열이 lin에서 올바른 형식이 아닌 것 같습니다. e "cmd.Parameters.Add (": srno ", OracleType.Number, 8) .Value = Convert.ToDecimal (GridView1.Rows [e.RowIndex] .Cells [2] .Text);" – Huga

+0

@Huga GridView1.Rows [e.RowIndex] .Cells [2] .Text에서 가져 오는 텍스트는 무엇입니까? – Coder