none
insert into字段太多怎么办? RRS feed

  • 问题

  • 这是我自定义的调用函数方法:

            #region 添加数据
            /// <summary>
            ///
            /// </summary>
            public void add_data(string strsql)
            {
                dbaidu.database_link();
                cmd = new SqlCommand();
                sda = new SqlDataAdapter();
                cmd.Connection = dbaidu.database_link();
                cmd.CommandText = strsql;
                cmd.CommandType = CommandType.Text;
                sda.SelectCommand= cmd;
                cmd.ExecuteNonQuery();
                dbaidu.database_close();
            }
            #endregion

    用传递进来的sqlstr来执行添加 数据到数据库。

    这是我调用方法是的sqlstr语句的定义:

                try
                {
                    string str1 = "insert into tb_XB values('" + comboBox1.Text + "','" + comboBox2.Text + "','" + textBox1.Text + "','" + textBox2.Text + "'," + textBox3.Text + "," + textBox4.Text + "";
                    string str2 = "'" + comboBox3.Text + "','" + comboBox4.Text + "'," + textBox5.Text + ",'" + comboBox5.Text + "','" + comboBox6.Text + "','" + comboBox7.Text + "'";
                    string str3 = "'" + comboBox8.Text + "','" + comboBox9.Text + "'," + comboBox10.Text + ",'" + comboBox11.Text + "','" + comboBox12.Text + "'," + textBox6.Text + "";
                    string str4 = "'" + comboBox13.Text + "','" + comboBox14.Text + "','" + comboBox15.Text + "','" + comboBox16.Text + "','" + comboBox17.Text + "','" + comboBox18.Text + "'";
                    string str5 = "'" + textBox7.Text + "'," + textBox8.Text + "," + comboBox19.Text + "," + textBox9.Text + ",'" + textBox10.Text + "'," + comboBox11.Text + "";
                    string str6 = "" + comboBox12.Text + "," + comboBox13.Text + "," + textBox14.Text + "," + textBox15.Text + "," + textBox16.Text + "," + textBox17.Text + "";
                    string str7 = "'" + textBox18.Text + "',"+textBox19.Text+ ")";
                    string sqlstr = str1 + str2 + str3 + str4 + str5 + str6 + str7;
                    query.add_data(sqlstr);
                    showdata();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

    由于字段太多我把它分成7个部分最后拼为sqlstr并传到方法中,运行时可以,但添加数据是提示在","附近有语法错误,请问怎么解决啊

    2013年8月28日 9:17

答案

  • 您好,

    您在調試時,設定中斷點在 query.add_data(sqlstr); ,然後查看sqlstr的內容!

    或是將sqlstr的內容拿到ssms中去執行,就知道sql是那裡有問題了哦! 如下圖,

    可以發現您的每個字串之間都少加入了逗號哦!

    string sqlstr = str1 + "," + str2 + "," + str3 + "," + str4 + "," + str5 + "," + str6 + "," + str7;

    PS.真的建議您可考慮使用前面各位大俠建議的方式哦!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已编辑 亂馬客 2013年8月29日 7:28 modify
    • 已标记为答案 yaojs 2013年9月1日 5:58
    2013年8月28日 12:20
  • 將中斷點下在 string sqlstr = str1 + str2 + str3 + str4 + str5 + str6 + str7;  然後使用偵錯啟動,當執行到中斷點時,將sqlstr複製到ssms去執行就可以知道問題點,因為是組合字串所以編譯的時候會通過,因為只檢查語法的錯誤,但執行時期會將組合的sql送到資料庫去執行,資料庫不接受這樣的語法,因為是錯誤的sql語法,所以會回傳錯誤

    • 已标记为答案 yaojs 2013年9月1日 5:58
    2013年8月28日 12:53

全部回复