gpt4 book ai didi

C# 替换 foreach

转载 作者:行者123 更新时间:2023-11-30 19:35:50 25 4
gpt4 key购买 nike

我正在使用 Web 服务 GET 请求来获取有关客户的一些信息。我想为从请求返回的每个客户插入一条记录到数据库中。

我现在有这个代码:

            var container = JsonConvert.DeserializeObject<MarkedCampaigns>(json);
string insertDB = "";
foreach (var item in container.items)
{
insertDB += "INSERT INTO TABLE (CampaignId,CookieId,Url) values(" + item.CampaignId + "," + item.VisitorExternalId + "," + item.Url + ");";
}
//EXECUTE STRING .

Container 是 Get 请求的响应。它包含一个 Item 属性,每个项目代表一个客户。

我的问题是,这是将记录插入数据库的正确方法吗?或者是否有更简单的方法来使用容器和一些我不熟悉的方法?

最佳答案

我强烈建议使用准备好的语句。一方面,这将消除每次解析查询时的一些不必要的开销,另一方面,它将迫使您使用参数化查询,这将防止类型转换问题——我认为这种情况会在您的代码中发生,因为 url 很可能是某种字符类型,并且您没有添加引号 - 和 SQL 注入(inject)。

string query = "INSERT INTO table(CampaignId, CookieId, Url) VALUES (@campaignid, @cookieid, @url)";

using (SqlConnection c = new SqlConnection(connectstring)) {
c.Open();
SqlCommand cmd = new SqlCommand(query, c);
cmd.Parameters.Add(new SqlParameter("@campaignid", SqlDbType.Int, 0)); //use appropriate type/size here
cmd.Parameters.Add(new SqlParameter("@cookieid", SqlDbType.Int, 0)); //use appropriate type/size here
cmd.Parameters.Add(new SqlParameter("@url", SqlDbType.NVarChar, 500)); //use appropriate type/size here

cmd.Prepare();

foreach (var item in container.items) {
cmd.Parameters[0].value = item.CampaignId;
cmd.Parameters[1].value = item.VisitorExternalId;
cmd.Parameters[2].value = item.url;
cmd.ExecuteNonQuery();
}
}

关于C# 替换 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com