Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
在SQL中插入多行作为sqlparameter_Sql_Sql Server 2008 - Fatal编程技术网

在SQL中插入多行作为sqlparameter

在SQL中插入多行作为sqlparameter,sql,sql-server-2008,Sql,Sql Server 2008,我的数据表中有1000行dt,我想一次将所有这些数据插入到我的sql表中。我知道如何使用for循环实现这一点。但我想知道是否有其他更好的方法可以一次将所有行插入datatbase。 我当前插入此数据的代码如下 DataTable dt = result.Tables[0]; SqlHelper.ExecuteScalar(GlobalSettings.DbDSN, CommandType.Text, "IN

我的数据表中有1000行
dt
,我想一次将所有这些数据插入到我的sql表中。我知道如何使用for循环实现这一点。但我想知道是否有其他更好的方法可以一次将所有行插入datatbase。 我当前插入此数据的代码如下

 DataTable dt = result.Tables[0];


        SqlHelper.ExecuteScalar(GlobalSettings.DbDSN, CommandType.Text,
                                  "INSERT INTO tbl_Projects (Project,Owner,Consultant ,Contractor,Value ,Level1,Level2 ,Status  ,Country ,CreatedDate  ,CreatedByID ,CreatedByName) VALUES (@Project,@Owner,@Consultant ,@Contractor,@Value ,@Level1,@Level2 ,@Status  ,@Country ,@CreatedDate  ,@CreatedByID ,@CreatedByName)",
                                  new SqlParameter("@Project",dt.Rows[0].ItemArray[0]),
                                  new SqlParameter("@Owner", dt.Rows[0].ItemArray[1]),
                                  new SqlParameter("@Consultant", dt.Rows[0].ItemArray[2]),
                                  new SqlParameter("@Contractor", dt.Rows[0].ItemArray[3]),
                                  new SqlParameter("@Value", dt.Rows[0].ItemArray[4]),
                                  new SqlParameter("@Level1", dt.Rows[0].ItemArray[5]),
                                  new SqlParameter("@Level2", dt.Rows[0].ItemArray[6]),
                                  new SqlParameter("@Status", dt.Rows[0].ItemArray[7]),
                                  new SqlParameter("@Country", dt.Rows[0].ItemArray[8]),
                                  new SqlParameter("@CreatedDate", System.DateTime.Now),
                                  new SqlParameter("@CreatedByID", ""),
                                  new SqlParameter("@CreatedByName", ""));

有人能帮我一下吗?

您可以利用
SqlBulkCopy
类来实现这一点。简而言之,创建并打开一个
SqlConnection
,然后使用此代码将其从
DataTable
批量复制到服务器

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
{
    bulkCopy.DestinationTableName = "tbl_Projects";
    bulkCopy.WriteToServer(dt);
}

您还可以使用表类型参数并将整个数据集从C#传递到SQL Server

请参阅此问题:

使用C#使用
SqlBulkCopy bulkcopy=newsqlbulkcopy(con)

一次可以插入10行

   DataTable dt = new DataTable();
        dt.Columns.Add("a");
        dt.Columns.Add("b");
        dt.Columns.Add("c");
        dt.Columns.Add("d");
        for (int i = 0; i < 10; i++)
        {
            DataRow dr = dt.NewRow();
            dr["a"] = 1;
            dr["b"] = 2;
            dr["c"] = "Charan";
            dr["d"] = 4;
            dt.Rows.Add(dr);
        }
        SqlConnection con = new SqlConnection("Connection String");
        using (SqlBulkCopy bulkcopy = new SqlBulkCopy(con))
        {
            con.Open();
            bulkcopy.DestinationTableName = "Sample";
            bulkcopy.WriteToServer(dt);
            con.Close();
        }
DataTable dt=newdatatable();
dt.列。添加(“a”);
dt.列。添加(“b”);
dt.列。添加(“c”);
dt.列。添加(“d”);
对于(int i=0;i<10;i++)
{
DataRow dr=dt.NewRow();
dr[“a”]=1;
dr[“b”]=2;
dr[“c”]=“Charan”;
dr[“d”]=4;
dt.Rows.Add(dr);
}
SqlConnection con=新的SqlConnection(“连接字符串”);
使用(SqlBulkCopy-bulkcopy=newsqlbulkcopy(con))
{
con.Open();
bulkcopy.DestinationTableName=“样本”;
bulkcopy.WriteToServer(dt);
con.Close();
}