2012-07-26 107 views
0

我有3個文本框添加技能,這將進入一個名爲'SkillName'列。 但是,我收到此錯誤。插入多個文本框值到sql數據庫

'System.Web.UI.Control' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'System.Web.UI.Control' could be found (are you missing a using directive or an assembly reference?) 

但我已經使用該組件使用System.Web.UI.WebControls;

這是我的代碼添加textboxes-

public void InsertSkillInfo() 
     { 


      String str = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=DBNAME;Integrated Security=True"; 
      SqlConnection conn = new SqlConnection(str); 

      try 
      { 

       for (int i = 1; i <= 3; i++) 
       { 
        conn.Open(); 
        **string skill = (Page.FindControl("TextBox" + i.ToString())).Text;** 
        const string sqlStatement = "INSERT INTO Cert (SkillName) VALUES (@SkillName)"; 
        SqlCommand cmd = new SqlCommand(sqlStatement, conn); 
        cmd.CommandType = CommandType.Text; 
        cmd.Parameters["@SkillName"].Value = skill; 
        cmd.ExecuteNonQuery(); 
       } 
      } 

      catch (System.Data.SqlClient.SqlException ex) 
      { 
       string msg = "Insert Error:"; 
       msg += ex.Message; 
       throw new Exception(msg); 
      } 

      finally 
      { 
       conn.Close(); 
      } 

     } 

回答

0

你需要控制轉換爲TexBox所以它應該是這個

string skill = ((TextBox) Page.FindControl("TextBox" + i.ToString())).Text; 
0

你可以嘗試它只是像這樣

string skill = ((TextBox)(Page.FindControl("TextBox" + i.ToString()))).Text; 
+0

謝謝..但現在不受此SqlParameterCollection – Girish 2012-07-26 09:49:24

+1

附近所含的與參數的SqlParameter的示值誤差與參數名稱 '@SkillName' 這是非常開放給SQL注入攻擊。如果有人輸入了一個叫做''的技能,會發生什麼情況] go drop table Cert go --'? – mdm 2012-07-26 10:03:51

2

Page.FindControl將返回一個Control,但你想要一個文本框。如果你確信它找到的控件總是一個文本框,那麼將其轉換爲一個文本框。

或者:

string skill = (TextBox)((Page.FindControl("TextBox" + i.ToString()))).Text; 

var skill = ""; 
var control = Page.FindControl("TextBox" + i.ToString()) as TextBox; 
if(control != null { 
    skill = control.Text; 
} 
+0

謝謝..但現在其顯示錯誤附近參數- 此參數名稱'@SkillName'的SqlParameter不包含此SqlParameterCollection。 – Girish 2012-07-26 09:41:01

+0

嘗試添加你的參數,像這樣:'cmd.Parameters.AddWithValue(「@ SkillName」,skill);' – mdm 2012-07-26 10:01:17

+0

工作,謝謝.. – Girish 2012-07-26 10:19:27