C# 将多个阵列保存到数据库asp.net

C# 将多个阵列保存到数据库asp.net,c#,sql,asp.net,C#,Sql,Asp.net,我是一名实习生,在实习期间没有得到所需的指导,所以我在这里问 string sql; sql = "INSERT INTO Uzk.Talen (Kantoor, Taal, Spreken, Lezen, Schrijven, Talen_op_werknemerID) VALUES "; sql += "('" + 1 + "', "; sql += "('" + languageMatches + "', "; sql += "('" + language

我是一名实习生,在实习期间没有得到所需的指导,所以我在这里问

string sql;                

sql = "INSERT INTO Uzk.Talen (Kantoor, Taal, Spreken, Lezen, Schrijven, Talen_op_werknemerID) VALUES ";
sql += "('" + 1 + "', ";
sql += "('" + languageMatches + "', ";
sql += "('" + languageMatches + "', ";
sql += "('" + languageMatches + "', ";
sql += "('" + languageMatches + "', ";
sql += "'" + knowhowMatches + "', ";
sql += "'" + werknemerId + "')";

SqlConnection Conn = new SqlConnection(connstring);
Conn.Open();
SqlCommand Cmd = new SqlCommand(sql, Conn);
int aantal = Cmd.ExecuteNonQuery();
Conn.Close();

我有两个数组,叫做languageMatches和knowhowMatches。我的代码必须能够循环sql insert查询,并且每次循环都必须插入languageMatches和knowhowMatches的第一个值。第二个循环必须插入languageMatches和knowhowMatches的第二个值,以此类推。我怎么能这样做?提前感谢

您可以在本地数据表中传递所有条目,然后使用SqlBulkCopy将所有内容添加到Sql Server上的目标表中

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Kantoor", typeof(string)));
dt.Columns.Add(new DataColumn("Taal", typeof(string)));
dt.Columns.Add(new DataColumn("Spreken", typeof(string)));
dt.Columns.Add(new DataColumn("Lezen", typeof(string)));
dt.Columns.Add(new DataColumn("Schrijven", typeof(string)));
dt.Columns.Add(new DataColumn("Talen_op_werknemerID", typeof(string)));
for(int x = 0; x < languageMatches.Length; x++)
{
    string lang = languageMatches[x];
    string known = knowhowMatches[x];
    dt.Rows.Add(new string[] { "1", lang, lang, lang, known, werknemerId });
}
using(SqlConnection Conn = new SqlConnection(connstring))
{
    Conn.Open();
    using (SqlBulkCopy bc = new SqlBulkCopy(Conn))
    {   
        bc.DestinationTableName = "Talen";
        bc.WriteToServer(dt);
    );
}
DataTable dt=newdatatable();
Add(新的数据列(“Kantoor”,typeof(string));
添加(新数据列(“Taal”,typeof(string));
Add(新数据列(“Spreken”,typeof(string));
添加(新的数据列(“Lezen”,typeof(string));
Add(新的数据列(“Schrijven”,typeof(string));
添加(新的数据列(“Talen_op_werknemerID”,typeof(string));
for(int x=0;x
但是,请考虑我已经准备了一个包含所有字符串字段的数据表。这似乎不正确,尤其是对于第一个和最后一个字段。如果内存中的数据表与数据库中的实际Talen表不同,则应使用正确的数据类型(int等)更改上述定义然后为Rows.Add方法提供适当的数据类型(如果目标列为int,则为int,依此类推)。此外,我不确定接收语言值的列数,您将相同的值添加4倍,但列似乎只有三个


当然,两个数组languageMatches和knowhowMatches应该具有相同数量的元素。

您可以在SQL中使用表值参数功能,然后它将非常快速地插入所使用的
字符串连接(“,”,arrayvalue);
是否希望数组中的每个条目都有不同的记录?@Steve yes,对于每个条目,我希望它位于新行中。立即了解参数化查询。您的代码对SQL注入非常开放。另外,请显示数组的示例