SQL Server VARBINARY 열에 Byte []를 삽입하는 방법
아래에 강조 표시된 바이트 배열이 있습니다. SQL Server 데이터베이스 Varbinary 열에 어떻게 삽입합니까?
byte[] arraytoinsert = new byte[10]{0,1,2,3,4,5,6,7,8,9};
string sql =
string.format
(
"INSERT INTO mssqltable (varbinarycolumn) VALUES ({0});",WHATTODOHERE
);
내 솔루션은 연결 개체가 데이터 형식을 올바르게 지정하므로 매개 변수가있는 쿼리를 사용하는 것입니다 (올바른 데이터 유형 확인 및 해당되는 경우 "위험한"문자 이스케이프 포함).
// Assuming "conn" is an open SqlConnection
using(SqlCommand cmd = new SqlCommand("INSERT INTO mssqltable(varbinarycolumn) VALUES (@binaryValue)", conn))
{
// Replace 8000, below, with the correct size of the field
cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, 8000).Value = arraytoinsert;
cmd.ExecuteNonQuery();
}
편집 : SqlCommand가 완료된 후 올바르게 처리하기 위해 John Saunders가 제안한 "using"문을 추가했습니다.
이 시도:
"0x" + BitConverter.ToString(arraytoinsert).Replace("-", "")
물론 문자열 연결보다는 매개 변수화 된 쿼리를 사용해야하지만 ...
이 시나리오에서 사용하려는 모든 어레이가 예제와 같이 작더라도 문제가되지 않습니다.
이를 큰 Blob에 사용할 경우 (예 : 많은 Mbs 또는 Gbs 크기의 큰 이진 파일을 a에 저장 VARBINARY
) SQL Server의 특정 지원을 사용하여 이러한 큰 Blob의 하위 섹션을 읽고 쓰는 것이 훨씬 낫습니다. READTEXT
및 같은 것 UPDATETEXT
, 또는 현재 버전의 SQL Server SUBSTRING
.
자세한 내용과 예제는 .NET Magazine의 2006 년 기사 ( "BLOB + Stream = BlobStream" , 네덜란드어, 완전한 소스 코드 포함) 또는 Peter de Jonghe의 CodeProject 에 대한 영어 번역 및 일반화를 참조하십시오 . 둘 다 내 웹 로그 에서 링크되었습니다 .
다음과 같이 매우 간단하고 효율적인 솔루션을 사용할 수 있습니다. 제가 한 일은 실제로 기본 자리 표시 자 대신 매개 변수를 사용하고 SqlParameter 개체를 만들고 다른 기존 실행 방법을 사용하는 것입니다. 예를 들어 시나리오에서 :
string sql = "INSERT INTO mssqltable (varbinarycolumn) VALUES (@img)";
SqlParameter param = new SqlParameter("img", arraytoinsert); //where img is your parameter name in the query
ExecuteStoreCommand(sql, param);
열린 SQL 연결이 설정되어 있으면 이것은 매력처럼 작동합니다.
모든 단계에 대해이 이미지 링크를 확인하십시오. https://drive.google.com/open?id=0B0-Ll2y6vo_sQ29hYndnbGZVZms
1 단계 : 테이블에 varbinary 유형의 필드를 만들었습니다.
STEP2 : sql_variant 유형의 매개 변수를 받아들이는 저장 프로 시저를 만들었습니다.
STEP3 : 프런트 엔드 asp.net 페이지에서 객체 유형의 SQL 데이터 소스 매개 변수를 생성했습니다.
<tr>
<td>
UPLOAD DOCUMENT</td>
<td>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" />
<asp:SqlDataSource ID="sqldsFileUploadConn" runat="server"
ConnectionString="<%$ ConnectionStrings: %>"
InsertCommand="ph_SaveDocument"
InsertCommandType="StoredProcedure">
<InsertParameters>
<asp:Parameter Name="DocBinaryForm" Type="Object" />
</InsertParameters>
</asp:SqlDataSource>
</td>
<td>
</td>
</tr>
4 단계 : 내 코드에서 SQL 데이터 소스 컨트롤을 사용하여이 저장 프로 시저 호출을 통해 FileUpload Control에서 FileBytes를 업로드하려고합니다.
Dim filebytes As Object
filebytes = FileUpload1.FileBytes()
sqldsFileUploadConn.InsertParameters("DocBinaryForm").DefaultValue = filebytes.ToString
Dim uploadstatus As Int16 = sqldsFileUploadConn.Insert()
' ... code continues ... '
'Programing' 카테고리의 다른 글
Visual Studio 빌드가 매우 느림 (0) | 2020.11.30 |
---|---|
AngularJS : 지시문에서 전역 이벤트에 바인딩하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.30 |
코드베이스를 처음부터 다시 작성해야하는 경우 (0) | 2020.11.30 |
Lisp 및 Erlang Atoms, Ruby 및 구성표 기호. (0) | 2020.11.30 |
JavaScript에서 클래스를 추가 / 제거하는 방법은 무엇입니까? (0) | 2020.11.30 |