Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法向数据库插入多个值_C#_Asp.net_Linq - Fatal编程技术网

C# 无法向数据库插入多个值

C# 无法向数据库插入多个值,c#,asp.net,linq,C#,Asp.net,Linq,我需要这方面的帮助:我正在尝试使用网页作为界面向数据库插入多个值。当我试图保存时,我得到了错误 “关键字“values”附近的语法不正确。” 下面是C#代码供您参考 using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.H

我需要这方面的帮助:我正在尝试使用网页作为界面向数据库插入多个值。当我试图保存时,我得到了错误

“关键字“values”附近的语法不正确。”

下面是C#代码供您参考

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection("Data Source=INHRPSM1D7C;Initial Catalog=Controller_Forecast;Integrated Security=True;");

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public void refress()
    {
        TextBox1.Text = "";
        TextBox2.Text = "";
        TextBox3.Text = "";
        TextBox4.Text = "";
        TextBox5.Text = "";
        TextBox6.Text = "";
        TextBox7.Text = "";
        TextBox8.Text = "";
        TextBox9.Text = "";
        TextBox10.Text = "";
        TextBox11.Text = "";
        TextBox12.Text = "";
        DropDownList1.Text = "";
        DropDownList2.Text = "";
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("insert into Controller_Forecast(C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13) values('" +
            TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + 
            "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text +
            "','" + TextBox7.Text + "','" + TextBox8.Text + "','" + TextBox9.Text +
            "','" + TextBox10.Text + "','" + TextBox11.Text + "','" + TextBox12.Text +
            "','" + DropDownList1.Text + "','" + DropDownList2.Text + "','" +
            DropDownList3.Text + "'),values('" + TextBox13.Text + "','" +
            TextBox14.Text + "','" + TextBox15.Text + "','" +
            TextBox16.Text + "','" + TextBox17.Text + "','" +
            TextBox18.Text + "','" + TextBox19.Text + "','" +
            TextBox20.Text + "','" + TextBox21.Text + "','" +
            TextBox22.Text + "','" + TextBox23.Text + "','" +
            TextBox24.Text + "','" + DropDownList4.Text + "','" +
            DropDownList5.Text + "','" + DropDownList6.Text + "')",con);

        cmd.CommandType = CommandType.Text;
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            Literal1.Text = "Data Updated Successfully!!!";
            con.Close();
            refress();
        }
        catch (Exception ex)
        {
            Literal1.Text = ex.Message;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        refress();
        Literal1.Text = "";
    }
}

您不能像尝试使用一个函数那样执行两组值。你的工作是:

INSERT INTO Controller_Forecast(C1,C2...)
VALUES(...loads of values...)
VALUES(...Loads of more values...)
这是无效的。要插入2组数据,这看起来就像您正在尝试做的,您可以执行2个insert INTO语句或使用逗号拆分值列表,如下所示:

多个insert语句

用逗号分隔

然而,这似乎效率低下,最好将其写入存储过程并对值进行参数化,以避免sql注入。

您有两个“值”。你能试试这个吗

“插入 控制器预测(C1、C2、C3、C4、C5、C6、C7、C8、C9、C10、C11、C12、C13) 值(''+ TextBox1.Text+“,”+TextBox2.Text+“,”+TextBox3.Text+ “,”“+TextBox4.Text+”,“+TextBox5.Text+”,“+TextBox6.Text”+ “,”“+TextBox7.Text+”,“+TextBox8.Text+”,“+TextBox9.Text”+ “,”“+TextBox10.Text+”,“+TextBox11.Text+”,“+TextBox12.Text”+ “,”+DropDownList1.Text+“,“+DropDownList2.Text+”,”+ DropDownList3.Text+“')”,con)


您正在使用串联创建的这个巨大的命令字符串中出现了一些错误,可能是缺少/额外的逗号或单引号。使用调试器并检查连接后此命令的外观。或者更好-根本不要使用连接,因为它会导致sql注入漏洞,而是使用参数化查询。我的系统中没有安装调试器,你能修改查询并粘贴它吗?你调用
值(…)
两次,这是无效的sql语法。哦,孩子,这一天将有一个字段。查询中有两次value()。还要确保VALUES()子句中的数据项数与开头指定的字段名数匹配。
INSERT INTO Controller_Forecast(C1,C2...)
VALUES(...your first set of values...)
INSERT INTO Controller_Forecast(C1,C2...)
VALUES(...your second set of values...)
INSERT INTO Controller_Forecast(C1,C2...)
VALUES(...your first set of values...), (...second set of values...)