2014-03-28 4 views
-3
public List<TextBox> _textBoxes = new List<TextBox>(); 

protected void btmSubmit_Click1(object sender, EventArgs e) 
{ 
    dbDataItem(); 
} 
public void dbDataItem() 
{ 
    dc.cnn.Open(); 
    _textBoxes = getTextBox(); 
    //foreach (TextBox text in _textBoxes) 
    //{ 
    // _textBoxes.Add(text.Text.Trim()); 
    // //StoreValue(text.Text); 
    //} 
    foreach (TextBox textBox in _textBoxes) 
    { 
     //TextBox txt = new TextBox(); 

     //txt.ID = Panel2.FindControl("textBox").ToString(); 
     string value = textBox.Text; 

     string query = "select name from DataItem where name = '" + value + "'"; 
     SqlCommand cmd = new SqlCommand(query, dc.cnn); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt);    
     int count = dt.Rows.Count; 


     if (count == 0) 
     { 
      int i = MaxCode1(); 
      SqlCommand cmd2 = new SqlCommand("insert into DataItem (code,name) values (@code,@name)", dc.cnn); 
      cmd2.Parameters.AddWithValue("@code", i); 
      cmd2.Parameters.AddWithValue("@name", value); 
      SqlDataAdapter da2 = new SqlDataAdapter(cmd2); 
      DataTable dt2 = new DataTable(); 
      da2.Fill(dt2); 
      dc.cnn.Close(); 
     } 
     else 
     { 

      Response.Write("<script language='javascript'>alert('This DataItem already exist in database');</script>"); 

     } 
    } 

    dc.cnn.Close(); 
} 
+4

당신이 제목이 문제를 충분히 설명 할 수 있다고 생각합니까? –

+0

'DataAdapter'와'DataTable'로 무엇을하고 있습니까? 왜 당신은'ExecuteNonQuery()''SqlCommand'를 사용하지 않을까요? – CodeCaster

+1

예외 또는 오류 메시지가 있습니까? –

답변

1

SqlDataAdapter.Fill을 호출하여 INSERT 명령을 실행하는 것은 올바르지 않습니다. Fill 메서드는 SELECT 문을 사용하여 데이터베이스에서 레코드를 검색하는 데 사용됩니다. 코드에서 INSERT 문은 어댑터의 SelectCommand로 전달되며 Fill을 호출 할 때 실행되어 데이터베이스 테이블에 레코드가 추가됩니다. 그러나 Fill 메서드에서 사용하는 SelectCommand에는 SELECT 문이 할당되어 있지 않으므로 DataTable 코드 개체에는 반환 값이 없습니다.

는 그런 다음, INSERT 문에있는 두 개의 작업을 먼저 ExecuteNonQuery는 분할 올바른 SELECT 문

SqlCommand cmd2 = new SqlCommand("insert into DataItem (code,name) values (@code,@name)", dc.cnn); 
cmd2.Parameters.AddWithValue("@code", i); 
cmd2.Parameters.AddWithValue("@name", value); 
cmd2.ExecuteNonQuery() 

SqlDataAdapter da2 = new SqlDataAdapter("SELECT * FROM DataItem"); 
DataTable dt2 = new DataTable(); 
da2.Fill(dt2); 
1

당신은 CMD2를 실행하지 마십시오과 어댑터를 작성해야합니다.

매개 변수를 설정 한 후, 다음과 같이 실행 :

cm2.ExecuteNonQuery(); 

그래서, 당신의 코드는 다음과 같습니다

SqlCommand cmd2 = new SqlCommand("insert into DataItem (code,name) values (@code,@name)", dc.cnn); 
cmd2.Parameters.AddWithValue("@code", i); 
cmd2.Parameters.AddWithValue("@name", value); 
cmd2.ExecuteNonQuery(); 
dc.cnn.Close(); 
+0

thnQ 너무 많은 각하 .......... 나는 해결책을 ..... ..... 얻었다 – priti

관련 문제