mssql 2008 사용자 정의 테이블 형식 구현 (대량 삽입 또는 수정)
오늘 은 SqlBulkCopy 를 말 하지 않 고 sql 사용자 정의 표 형식 만 간단히 말 합 니 다.현재 의 프로젝트 는 표를 나 누 는 방식 을 사 용 했 기 때문에 저장 과정 으로 자동 으로 표를 만 드 는 것 이 비교적 편리 하 다.지금 내 가 현재 쓰 고 있 는 기능 을 간단하게 기록 하 는 것 도 나중에 스스로 찾 아 보 는 데 편리 하 다.
첫 번 째 단 계 는 데이터베이스 에서 새 조 회 를 클릭 하여 해당 하 는 sql 을 만 듭 니 다.
--====== Demo======
--
create table tab
(
tabvalue varchar(10)
)
go
--
create type Type_tab as table
(
Type_tabvalue varchar(10)
)
go
--
create procedure p_Tab
(
@ptab Type_tab readonly
)
as
begin
insert into tab select * from @ptab
end
--sql type1
declare @tt Type_tab
insert into @tt values('a')
insert into @tt values('b')
insert into @tt values('c')
insert into tab select * from @tt
select * from tab
--sql type2
declare @tt2 Type_tab
insert into @tt2 values('a')
insert into @tt2 values('b')
insert into @tt2 values('c')
execute p_Tab @tt2
두 번 째 asp. net 호출 저장 프로시저
using (SqlConnection conn =SqlHelper.Settings.GetSqlConnection(true))
{
try
{
DataTable DtAdd = new DataTable();
DtAdd.Columns.Add("tabvalue");
DtAdd.Columns["tabvalue"].DataType = System.Type.GetType("System.String");
foreach (ModelEnt rl in List)
{
DataRow Dr = DtAdd.NewRow();
Dr["tabvalue"] = rl.tabvalue;
DtAdd.Rows.Add(Dr);
}
//int Rt = SqlHelper.SqlHelper.SqlBulkCopy(DtAdd, TableName, conn);
SqlCommand cmd = new SqlCommand("p_Tab", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ptab", SqlDbType.Structured).Value =DtAdd;
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
#if DEBUG
throw ex;
#else
return -10000;
#endif
}
finally
{
conn.Close();
}
ModelEnt 는 tab 표 에 대응 하 는 실체 클래스 입 니 다.list 는 ModelEnt 의 집합 입 니 다. 이렇게 하면 여러 개의 row 를 실현 할 수 있 고 한 번 에 여러 개의 기록 을 삽입 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.