SQL Server VARBINARY 열에 바이트[]를 삽입하는 방법
아래에 강조 표시된 바이트 배열이 있는데, 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
);
사용해 보십시오.
"0x" + BitConverter.ToString(arraytoinsert).Replace("-", "")
물론 문자열 연결보다는 매개 변수화된 쿼리를 사용해야 하지만...
연결 개체가 데이터 형식을 올바르게 지정하기 때문에 매개 변수화된 쿼리를 사용하는 것이 제 해결책입니다(올바른 데이터 유형 확인 및 해당되는 경우 "위험한" 문자 탈출 포함).
// 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();
}
Edit: Sql Command가 완료된 후 올바르게 폐기하기 위해 John Sanders가 제안한 "사용 중"이라는 래핑 문을 추가했습니다.
이 시나리오에서 사용하려는 모든 어레이가 예처럼 작더라도 문제가 없습니다.
만약 당신이 이것을 큰 블롭에 사용할 것이라면 (예를 들어, 많은 크기의 많은 Mbs 또는 심지어 Gbs를 저장하는 것과 같은)VARBINARY
그러면 SQL Server의 특정 지원을 사용하여 이러한 큰 블롭의 하위 섹션을 읽고 쓰는 것이 훨씬 더 나을 것입니다.및 같은 항목 또는 SQL Server의 현재 버전SUBSTRING
.
자세한 내용과 예제는 2006년 .NET Magazine 기사("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 유형의 필드를 작성했습니다.
2단계: sql_variant 유형의 매개 변수를 수락하는 저장 프로시저를 만들었습니다.
3단계: 프론트엔드 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 ... '
언급URL : https://stackoverflow.com/questions/1064121/how-do-i-insert-a-byte-into-an-sql-server-varbinary-column
'IT' 카테고리의 다른 글
MySQL과 다른 데이터베이스의 단점 (0) | 2023.06.27 |
---|---|
SQL Server 파일 이름 대 버전 (0) | 2023.06.27 |
Firebase v3.0.1+에서 로그아웃을 구현하는 가장 좋은 방법은 무엇입니까?업데이트 후 Firebase.unauth가 제거되었습니다. (0) | 2023.06.22 |
판다는 보기와 복사본을 생성하기 위해 어떤 규칙을 사용합니까? (0) | 2023.06.22 |
T-SQL 표에서 두 번째 행만 선택하는 방법은 무엇입니까? (0) | 2023.06.22 |