且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在SQL中插入列表通用集合

更新时间:2023-11-30 20:18:22

请遵循以下

查找.cs代码

使用系统;
使用System.Collections;
使用System.Configuration;
使用System.Data;
使用System.Linq;
使用System.Web;
使用System.Web.Security;
使用System.Web.UI;
使用System.Web.UI.HtmlControls;
使用System.Web.UI.WebControls;
使用System.Web.UI.WebControls.WebParts;
使用System.Xml.Linq;
使用System.Collections.Generic;
使用System.Text;
使用System.Data.SqlClient;

公共静态类ListExtension
{
公共静态字符串ToXMLString(此列表< userimage>列表)
{
StringBuilder sb = new StringBuilder();

sb.Append(< userimages>");
foreach(列表中的UserImage图像)
{
sb.Append(image.ToString());
}
sb.Append(");

返回sb.ToString();
}
}

公共类UserImage
{
公开长号{放; }
公共长UserId {放; }
公共字符串OriginalName {get;放; }
公用字符串StorageName {get;放; }

public UserImage(){}
公共UserImage(长id,长userId,字符串originalName,字符串storageName)
{
this.Id = id;
this.OriginalName = originalName;
this.StorageName = storageName;
this.UserId = userId;
}

公共重写字符串ToString()
{
返回string.Format(< userimage hashcode =" \"{0} \""=""id =" \"{1} \""=""userid =" \"{2} \""=" "originalname =" \"{3} \""=""storagename =" \"{4} \""=" =>",
this.GetHashCode(),this.Id,this.UserId,this.OriginalName,this.StorageName);
}
}

公共局部类InsertingCollection:System.Web.UI.Page
{

受保护的void Page_Load(对象发送者,EventArgs e)
{
列出< userimage> imageList =新列表< userimage>();

imageList.Add(新的UserImage(1,786,"Test1.jpg",@"C:\ Temp \ User_786_1.jpg"));
imageList.Add(新的UserImage(2,786,"Test2.jpg",@"C:\ Temp \ User_786_2.jpg"));
imageList.Add(新的UserImage(3,786,"Test3.jpg",@"C:\ Temp \ User_786_3.jpg"));
imageList.Add(新的UserImage(4,786,"Test4.jpg",@"C:\ Temp \ User_786_4.jpg"));
imageList.Add(新的UserImage(5,786,"Test5.jpg",@"C:\ Temp \ User_786_5.jpg"));
imageList.Add(新的UserImage(6,786,"Test6.jpg",@"C:\ Temp \ User_786_6.jpg"));

//出于测试目的
Response.ContentType ="text/xml";
Response.Write(imageList.ToXMLString());

DataManager.InsertUserImage(imageList.ToXMLString());
}
}

公共静态类DataManager
{
内部静态void InsertUserImage(string userImages)
{
使用(SqlConnection con = new SqlConnection("[YOUR_CONNECTION_STRING]"))
{
SqlCommand cmd = con.CreateCommand();
SqlParameter param =新的SqlParameter();
cmd.CommandText ="[STOREDPROCEDURE_NAME" ;;
cmd.CommandType = CommandType.StoredProcedure;
param.ParameterName ="@UserImages";
param.Value = userImages;
param.DbType = DbType.Xml;

cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
con.Close();
}
}
}


并在sql服务器端代码


将@UserImages声明为XML

SELECT @UserImages =
''< userimages>
< userimage hashcode ="60272281" id ="1" userid ="786" originalname ="Test1.jpg" storagename ="C:\ Temp \ User_786_1.jpg">
< userimage hashcode ="55244443" id ="2" userid ="786" originalname ="Test2.jpg" storagename ="C:\ Temp \ User_786_2.jpg">
< userimage hashcode ="50429688" id ="3" userid ="786" originalname ="Test3.jpg" storagename ="C:\ Temp \ User_786_3.jpg">
< userimage hashcode ="54351321" id ="4" userid ="786" originalname ="Test4.jpg" storagename ="C:\ Temp \ User_786_4.jpg">
< userimage hashcode ="13811662" id ="5" userid ="786" originalname ="Test5.jpg" storagename ="C:\ Temp \ User_786_5.jpg">
< userimage hashcode ="29407249" id ="6" userid ="786" originalname ="Test6.jpg" storagename ="C:\ Temp \ User_786_6.jpg">
''

设置NOCOUNT ON

声明@UserImageTable AS TABLE
(
ID BIGINT,
UserId BIGINT,
OriginalName VARCHAR(100),
StorageName VARCHAR(100)
)

插入@UserImageTable

选择
--UserImage.value(``@HashCode [1]'',``VARCHAR(10)'')作为HashCode,
UserImage.value(``@Id [1]'',``VARCHAR(10)'')作为ID,
UserImage.value(``@UserId [1]'',``VARCHAR(10)'')作为UserId,
UserImage.value(``@OriginalName [1]'',``VARCHAR(100)'')作为OriginalName,
UserImage.value(''@StorageName [1]'',``VARCHAR(100)'')作为StorageName
来自
@ UserImages.nodes(''/UserImages/UserImage'')v(UserImage)

SELECT * FROM @UserImageTable


这是解决方案
please follow as below

find .cs code

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

public static class ListExtension
{
public static string ToXMLString(this List<userimage> list)
{
StringBuilder sb = new StringBuilder();

sb.Append("<userimages>");
foreach (UserImage image in list)
{
sb.Append(image.ToString());
}
sb.Append("");

return sb.ToString();
}
}

public class UserImage
{
public long Id { get; set; }
public long UserId { get; set; }
public string OriginalName { get; set; }
public string StorageName { get; set; }

public UserImage() { }
public UserImage(long id, long userId, string originalName, string storageName)
{
this.Id = id;
this.OriginalName = originalName;
this.StorageName = storageName;
this.UserId = userId;
}

public override string ToString()
{
return string.Format("<userimage hashcode="\" {0}\""="" id="\" {1}\""="" userid="\" {2}\""="" originalname="\" {3}\""="" storagename="\" {4}\""="">",
this.GetHashCode(), this.Id, this.UserId, this.OriginalName, this.StorageName);
}
}

public partial class InsertingCollection : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
List<userimage> imageList = new List<userimage>();

imageList.Add(new UserImage(1, 786, "Test1.jpg", @"C:\Temp\User_786_1.jpg"));
imageList.Add(new UserImage(2, 786, "Test2.jpg", @"C:\Temp\User_786_2.jpg"));
imageList.Add(new UserImage(3, 786, "Test3.jpg", @"C:\Temp\User_786_3.jpg"));
imageList.Add(new UserImage(4, 786, "Test4.jpg", @"C:\Temp\User_786_4.jpg"));
imageList.Add(new UserImage(5, 786, "Test5.jpg", @"C:\Temp\User_786_5.jpg"));
imageList.Add(new UserImage(6, 786, "Test6.jpg", @"C:\Temp\User_786_6.jpg"));

//For testing purpose
Response.ContentType = "text/xml";
Response.Write(imageList.ToXMLString());

DataManager.InsertUserImage(imageList.ToXMLString());
}
}

public static class DataManager
{
internal static void InsertUserImage(string userImages)
{
using (SqlConnection con = new SqlConnection("[YOUR_CONNECTION_STRING]"))
{
SqlCommand cmd = con.CreateCommand();
SqlParameter param = new SqlParameter();
cmd.CommandText = "[STOREDPROCEDURE_NAME";
cmd.CommandType = CommandType.StoredProcedure;
param.ParameterName = "@UserImages";
param.Value = userImages;
param.DbType = DbType.Xml;

cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
con.Close();
}
}
}


and at the sql server side code


Declare @UserImages as XML

SELECT @UserImages =
'' <userimages>
<userimage hashcode="60272281" id="1" userid="786" originalname="Test1.jpg" storagename="C:\Temp\User_786_1.jpg">
<userimage hashcode="55244443" id="2" userid="786" originalname="Test2.jpg" storagename="C:\Temp\User_786_2.jpg">
<userimage hashcode="50429688" id="3" userid="786" originalname="Test3.jpg" storagename="C:\Temp\User_786_3.jpg">
<userimage hashcode="54351321" id="4" userid="786" originalname="Test4.jpg" storagename="C:\Temp\User_786_4.jpg">
<userimage hashcode="13811662" id="5" userid="786" originalname="Test5.jpg" storagename="C:\Temp\User_786_5.jpg">
<userimage hashcode="29407249" id="6" userid="786" originalname="Test6.jpg" storagename="C:\Temp\User_786_6.jpg">
''

SET NOCOUNT ON

DECLARE @UserImageTable AS TABLE
(
Id BIGINT,
UserId BIGINT,
OriginalName VARCHAR(100),
StorageName VARCHAR(100)
)

INSERT INTO @UserImageTable

SELECT
--UserImage.value (''@HashCode[1]'', ''VARCHAR(10)'') as HashCode,
UserImage.value (''@Id[1]'', ''VARCHAR(10)'') as Id,
UserImage.value (''@UserId[1]'', ''VARCHAR(10)'') as UserId,
UserImage.value (''@OriginalName[1]'', ''VARCHAR(100)'') as OriginalName,
UserImage.value (''@StorageName[1]'', ''VARCHAR(100)'') as StorageName
FROM
@UserImages.nodes(''/UserImages/UserImage'') v(UserImage)

SELECT * FROM @UserImageTable


this is the solution