string sql = string.Format("insert into dbo." + DropDownList1.Text + " values('" + tb[i] + "')", string.Join(",", tb.ToString()));
红色部分是表名?你数据库有这张表么?

解决方案 »

  1.   

      string[] tb = new string[Panel1.Controls.Count]{};
            for (int i = 1; i <= Panel1.Controls.Count; i++)
            {
                TextBox t = (TextBox)Panel1.FindControl("textbox[" + i + "]");
                if(t!=null)
                  tb[i] = t.Text.ToString();
            }具体报什么错误
      

  2.   

      string sql = string.Format("insert into dbo." + DropDownList1.SelectItem.Text + "   values('{0}')", string.Join(",", tb));
      

  3.   

    sql语句这么写看着有点儿晕啊,全部用占位符写,清晰多了~再打个断点,看看是哪一步出问题了
      

  4.   

    string[Panel1.Controls.Count]{},提示这里面必须是常量。。
      

  5.   

    DropDownList1.Text  介个值是多少呢?
      

  6.   

     string[] tb = new string[Panel1.Controls.Count]{};
    =========
     string[] tb = new string[Panel1.Controls.Count];调试一下,看具体出错在哪里
      

  7.   

    string[Panel1.Controls.Count]{},提示这里面必须是常量。。
    那你就打断点看下这个Count是多少
      

  8.   

    一开始程序报错说我查询语句中的tb[i]值是空的。。
      

  9.   

    数组在真正赋值前需要知道数组的大小,使用ArrayList吧。
      

  10.   

    断点调试之后发现Panel1.Controls.Count,与第一个BUTTON创建的TEXTBOX数目不一样。。
      

  11.   

    string[Panel1.Controls.Count]{},提示这里面必须是常量。。
    那你就打断点看下这个Count是多少
    COUNT是2貌似不对,根据选的表,应该是4个TEXTBOX才对,怎么改呢
      

  12.   

    string sql = string.Format("insert into dbo." + DropDownList1.Text + " values('" + tb[i] + "')", string.Join(",", tb.ToString()));values中的 tb[i],你的变量i是在循环中起作用的,出了循环这个i就不起作用了,如果你需要把tb中所有的值都插入的话需要重新循环一个字符串,类似string values = string.Empty;
    foreach(string s in tb)
    {
        values += s + ",";
    }
    values.Substring(0, values.Length - 2); //去掉最后一个逗号
     然后把values替换到tb[i]的位置。按我理解的意思就是这样
      

  13.   

    看错了,你改的有问题,sql字串那句string sql = string.Format("insert into dbo." + DropDownList1.Text + " values('" + values.Substring(0, values.Length - 2) + "')", string.Join(",", tb.ToString()));你的values是sql语句里的子串,还是要再双引号下的,新的values是创建的变量,要在引号外面的++中间
      

  14.   

    我断点调试这行不对,找不到PANEL中的TEXTBOX...TextBox txt = this.FindControl("textbox["+i+"]") as TextBox;
      

  15.   

    我断点调试这行不对,找不到PANEL中的TEXTBOX...TextBox txt = this.FindControl("textbox["+i+"]") as TextBox;
    还有你下面那句报错,values.Length ,LENGTH不能小于0
      

  16.   

    求解啊panel.find.control无法获取动态创建的TEXTBOX的值,我断点调试发现找不出TEXTBOX
    TextBox txt = this.FindControl("textbox["+i+"]") as TextBox; 
      

  17.   

    做增删改 要在最后加上con.Close();
      

  18.   

    你看看你动态生成的TExtBox的ID正确不正确??
    可以在代码中Show一下。
      

  19.   

    你的生成的TextBox的ID好像没有中括号[]
    为什么在findcontrol里加了中括号[]
      

  20.   

    是这样的问题吧,找的是ID为  textbox[1]的东东
      

  21.   


    断点调试,拿到sql去数据库执行下就知道错那了
      

  22.   

    //修改
          for (int i = 1; i <= Panel1.Controls.Count; i++)
            {
                TextBox t = (TextBox)Panel1.FindControl("textbox[" + i + "]");
                tb[i] = t.Text.ToString();
                string sql = string.Format("insert into dbo." + DropDownList1.Text + " values('" + tb[i] + "')", string.Join(",", tb.ToString()));
    //亲 你的这个i不会报错吗?i的作用域只在for里面哦
                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.ExecuteNonQuery();
             }
      

  23.   

    protected void Button5_Click1(object sender, EventArgs e)
        {
            string[] tb = new string[]{};
            for (int i = 1; i <= Panel1.Controls.Count; i++)
            {
                TextBox t = (TextBox)Panel1.FindControl("textbox[" + i + "]");
                tb[i] = t.Text.ToString();
                string sql = string.Format("insert into dbo." + DropDownList1.Text + " values('" + tb[i] + "')", string.Join(",", tb.ToString()));
    //亲 你的这个i不会报错吗?i的作用域只在for里面哦
              SqlConnection con = new SqlConnection("server=(Local);database=hdb;uid=sa;pwd=sa@123");
            con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.ExecuteNonQuery();
    con.Close();
    }
        }