使用 ADO.NET 如何将数据列表插入 SQL?

Posted

技术标签:

【中文标题】使用 ADO.NET 如何将数据列表插入 SQL?【英文标题】:Using ADO.NET how to insert list of data into SQL? 【发布时间】:2020-12-01 07:13:14 【问题描述】:

我有一个数据列表,例如 list=[id:1,name:"ABC",age:12,id:2,name:"QWE",age:21] 我想将这些数据动态插入到数据库中。

我用谷歌搜索并找到了如何插入特定数据。但不知道如何读取列表然后插入这些数据。

string connetionString = null;
            SqlConnection connection;
            SqlCommand command;
            string sql = null;
            connetionString = "Data Source=source;Initial Catalog=testDB;User ID=ABCD;Password=password";
            sql = "INSERT INTO TableName (id,name,age) VALUES('1','ABC',12)";
            connection = new SqlConnection(connetionString);
            try
            
                connection.Open();;
                command = new SqlCommand(sql, connection);
                command.ExecuteNonQuery();
               
                command.Dispose();
                connection.Close();
            
            catch (Exception ex)
            
                Console.WriteLine("Can not open connection ! ");
            

【问题讨论】:

哦,好吧......提前问你......编码本身不是问题,不是吗? 对于插入和阅读,您应该使用不同的代码。例如,您读取数据,也许您在 griedview 中显示,也许在单击事件之后您可以在表格中插入一些值。你写了你怎么能插入,如果你想我可以写你怎么读? 您的数据,恕我直言,是 JSON,因此您可以使用库将 json 解析为某个类。然后您可以使用准备好的语句插入该数组的每条记录... 查看此博客。它有你的问题的答案grauenwolf.github.io/DotNet-ORM-Cookbook/Joins.htm#ado.netgrauenwolf.github.io/DotNet-ORM-Cookbook/… 使用批量插入。 SqlBulkCopy 【参考方案1】:
cnx.Open(); // open cnx 
if(List.Count !=0) // if List isn't empty 
    for(int i = 0 i < List.Count ;i++)
        
            // here he will execute one by one 
            string myQuery ="insert into TABLE_NAME values ('"+List[i][0]+"','"+List[i][1]+"','"+List[i][3]+"' ");
            SqlCommand cmd = new SqlCommand(myQuery,cnx);
            cmd.ExecuteNonQuery();
        

// i hope it's help you :))

【讨论】:

这就是你获得SQL注入攻击的方式;对不起,但这是一个糟糕的答案 IMO - 任何促进连接输入以创建 SQL 的东西本质上都是非常糟糕 那么最好的方法是什么? :)) ? 参数化 SQL,或者如果你正在做很多行:SqlBulkCopy 哈哈,我明白了,谢谢

以上是关于使用 ADO.NET 如何将数据列表插入 SQL?的主要内容,如果未能解决你的问题,请参考以下文章

意图服务中的多个异步 Ado.net sql 插入

通过 C# 使用 ado.net 将值插入 SQL Server 数据库

如何使用ADO.NET向数据库中插入数据

SSIS 将 ADO Net 源聚合到 SQL Server 数据库中

ADO.net 如何将数据库单元格变成整数?

SQL Server之 ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号