2009-12-16 4 views
0

저는 csv 파일을 사용하고 sqlserver에 데이터를 저장하는 소프트웨어를 만들고 있습니다. 나는 지금 나쁜 데이터로 그것을 테스트하고 있는데, 나는 (라인에서) 데이터베이스에 가져올 데이터 문자열을 만들 때 오류가 발생했다. 문자열 또는 바이너리 데이터가 절사되고 명령문이 종료되었다. 그건 정상이고 그게 내가 기대해야하는거야. 이제 데이터베이스 업데이트 전에 이러한 오류를 감지하고 싶습니다. 이것을 발견 할 수있는 영리한 방법이 있습니까?데이터베이스를 업데이트 할 때 문자열이 잘리는 지 알고 있습니다.

내 소프트웨어가 작동하는 방식은 데이터 집합의 모든 행을 가져 와서 가져올 데이터를 사용자에게 표시하는 것입니다. 그런 다음 버튼을 클릭하여 실제 업데이트를 수행 할 수 있습니다. 그런 다음 dataAdapter.Update (Dataset, "something")를 수행하여 데이터베이스를 업데이트합니다.

문제는 오류 행이 모든 업데이트를 종료하고 오류를보고한다는 것입니다. 그래서 내가 서버에 업데이 트하기 전에 다른 행이 삽입됩니다 오류를 감지하고 싶습니다.

감사합니다.

답변

1

각 행의 열을 확인해야합니다. 데이터베이스에 지정된 최대 값을 초과하는지 확인하고, 그렇다면 삽입되지 않도록하십시오.

다른 솔루션은 명시 적으로 데이터를 자르고 자른 내용을 삽입하는 것입니다 (SubString을 사용하여 수행 할 수 있음). 내가 아는

+0

문제는 서버의 varchar 크기를 알 수 없기 때문입니다. 나는 그것을 알고 있지만 그것은 클라이언트 서버에서 변경할 수 있으므로 길이를 가정 할 수 없다는 것을 의미합니다. 그래서 서버의 길이를 요청하는 방법이 필요합니다. –

1

수있는 유일한 방법은 문자 제한에 대한 정보 스키마를 미리 확인하는 것입니다 :

Select 
    Column_Name, 
    Character_Maximum_Length 
From 
    Information_Schema.Columns 
Where 
    Table_Name = 'YourTableName' 
0

또는, 당신은 당신의 데이터베이스에서 레코드를 열 경우, 다른 솔루션은 문자열을 잘라내 길이를 사용하는 필드 개체를 검색하는 것입니다. 예를 들어, ADO 레코드 집합/VB 코드를 사용하면 다음과 같은 코드를 가질 수 있습니다.

myRecordset.fields(myField) = left(myString, myRecordset.fields(myField).DefinedSize) 
관련 문제