2012-11-01 2 views
0

나는 C#을 초보자로 어리석은 질문을 묻는 것에 대해 유감스럽게 생각합니다.문자열 데이터 형식을 SQL의 varbinary와 동등한 데이터 형식으로 변환하는 방법?

현재 OLEDB를 사용하여 C#으로 작업하고 있습니다. 시나리오는 username, pasword 등과 같은 정보가있는 테이블 하나에 삽입하고자합니다. 데이터베이스는 SQL Server입니다. Pasword 열의 데이터 유형은 varbinary (100)입니다.

문자열 데이터 형식에서 SQL의 varbinary equivalent 데이터 형식으로 변경하려고합니다. 나는 조금 노력했지만 성공하지 못했습니다.

처음에는 그냥 reader.GetString(5)으로 시도했습니다. 하지만 내가 가진 예외입니다 :

"Specified cast is not valid." 

나는 * 내가 사용

리더는 방법 OleDbDataReader 사물 아래 언급에 잊었다 *.

oleParameter[7] = new OleDbParameter("@Password", OleDbType.VarBinary, 100); 
oleParameter[7].Value = reader1.GetBytes(5); 

는 (여기서 나는 하나 개의 테이블에서 읽고 다른 테이블에 삽입하고있다.)

저를 도와주세요.

감사합니다.

답변

0

나는 해결책을 얻었다. 대신에 아래의 코드 라인을 작성

,

oleParameter[7] = new OleDbParameter("@Password", OleDbType.VarBinary, 100); 
oleParameter[7].Value = reader1.GetBytes(5); 

난 그냥 코드를 아래와 같이 시도 :이 필드에 대한 데이터 유형을 지정하지 않은

byte[] array = (byte[])reader1.GetValue(9); 
    oleParameter[7] = new OleDbParameter("@Password",array); 

과 (문자열을 생성자의 OleDbParameter를 사용 이름, 객체 값).

그리고 제대로 작동합니다.

답장을 보내 주신 Khellang과 Eren Ersönmez에게 감사드립니다.

0

이진 데이터를 문자열로 읽을 수 없으므로 SqlDataReader.GetBytes 메서드를 사용하십시오.

는 ... this에서 봐

당신은 보낼 필요가
0

/응용 프로그램과 VARBINARY 컬럼 사이의 바이트를받을 수 있습니다. 다시 바이트 배열을 취득하면, 당신은 문자열로 변환 할 수 있습니다

var bytes = reader.GetBytes(5); 
var myString = Encoding.UTF8.GetString(bytes); // use the same encoding used 
               // to create the bytes 
               // when saving to the DB. 

바이트 배열로 문자열을 변환하려면 :

var bytes = Encoding.UTF8.GetBytes(myString); 
0

왜 나는 reader.GetBytes (5)가 작동하지 않는 이유에 대해 약간의 설명을 추가하려고합니다. 나는 전에 그 문제를 직접 만났어.

이 기능이 제대로 작동하려면 특히 필드에서 그 안에 Null 값이 발생하지 않아야합니다.

.GetBytes (5) 작업을 수행하기 전에 IsDBNull (reader (5)) 문을 사용하여 값을 테스트 할 수 있습니다.

참고하시기 바랍니다.

관련 문제