2012-02-14 1 views
0

테이블 사용자의 데이터 형식이 nchar (2)믹스이라는 필드가 있습니다. 이 테이블에서 VS2010의 DataSet을 만들었습니다. DataSet의 필드 믹스는 입니다. System.String이고 최대 길이는 입니다. 이 DataSet에 바인딩 된 텍스트 필드가 있습니다. 이제 예를 들어 내가 값을 "00"으로 변경하고 나는 프로그램이있을 때 다시 데이터베이스에 데이터 집합을 업데이트하는 것을 볼 수있다 저장을 클릭하면 :데이터 형식 nchar (2)의 앞에 오는 0

usersTableAdapter.Update(usersDataSet.Users); 

현재 선택한 사용자의 값이 "00"입니다 : "0"

currentUser.mix = "00"; 

그러나 값은 다음과 같이 저장되어있는 데이터베이스에

. 왜 첫 번째 0이 제거되었고 마지막에 공간이 추가되었는지 이해할 수 없습니다. 예를 들어 텍스트 필드에 "10"을 입력하고 저장하면 데이터베이스에 "10"으로 저장됩니다. 그러나 텍스트 필드에 "01"을 넣으면 맨 앞의 0이 제거되고 "> 1"이됩니다.

+1

어딘가에서 변환 중입니다. 이 값은 숫자 형식이어야합니다 (마지막으로 삽입/업데이트가 문자열을 다시 문자열로 변환하는 것입니다). 이 전환이 일어나는 곳을 찾아야합니다. –

+0

줄 단위로 디버깅하고 마지막 업데이트 코드에 mix 값은 항상 문자열 ("00")로 표시되므로이 변환 colud가 어디에서 발생하는지 알 수 없습니다. 나는 그것이 데이터 셋과 데이터베이스 사이의 어딘가에서 일어난다 고 생각한다. –

+0

'UpdateCommand'와'InsertCommand' ('SqlDataAdapter'라고 가정합니다)'usersTableAdapter'를 조사하십시오. 그들의'CommandText'는 무엇입니까? 매개 변수가 있습니까? 만약 그들이 잘못 되었다면 어떻게'usersTableAdapter'가 생성 되었습니까? –

답변

1

어딘가, 어딘가에서이 값을 숫자 형식으로 변환하고 있습니다. 마지막으로 삽입/업데이트가이를 다시 문자열로 변환합니다. 이 전환이 일어나는 곳을 찾아야합니다. 귀하의 의견을 바탕으로

: 나는 라인으로 최종 Update 코드 라인을 디버깅

이 믹스의 값이 문자열에 항상 ("00")

마지막 장소 확인은 귀하의 SqlDataAdapter (usersTableAdapter)에 대해 구성된 명령이 무엇인지 확인하는 것입니다. InsertCommandUpdateCommand을 검사하고 명령이 의미가 있으며 매개 변수의 유형이 올바른지 확인하십시오.

저는 디자이너 기반의 데이터 액세스로 많은 일을하지는 못했지만 디자이너에서 테이블 어댑터를 처음 만들 때 명령이 선택되었다고 생각합니다. 데이터 세트의 모양을 변경하려면 (예 : 열 유형 변경) 어댑터/데이터 세트를 삭제하고 다시 만드는 것이 좋습니다.하지만 디자이너 기반 도구로 쉽게 할 수 있습니다.)

관련 문제