2012-07-26 114 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