首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个阵列保存到数据库asp.net

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

Stack Overflow用户
提问于 2020-01-24 22:13:13
回答 2查看 141关注 0票数 0

我是一个实习生,我在实习时得不到我需要的指导,所以我在这里问这个问题。

代码语言:javascript
复制
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的第二个值,依此类推。我怎么能这样做呢?提前感谢

EN

回答 2

Stack Overflow用户

发布于 2020-01-24 22:35:46

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

代码语言:javascript
复制
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。这似乎并不正确,尤其是对于第一个和最后一个字段。如果内存中的DataTable与数据库上的实际Talen表不同,则应该使用适当的数据类型(int等)更改上面的定义,然后为Rows.Add方法提供适当的数据类型(如果目标列是int,则为int,依此类推)。此外,我不确定接收语言的值的列数,您添加4倍相同的值,但列似乎只有三个。

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

票数 0
EN

Stack Overflow用户

发布于 2020-01-24 22:44:57

您可以使用SQL中的表值参数功能,然后它将非常快地插入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59898175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档