2016-07-15 1 views
-1

사용자 이름을 지정한이 테이블이 있는데 사용자가 가입 양식을 사용할 때마다 입력 한 모든 자격 증명을 Users.table에 삽입하려고합니다 . 문제는 어떻게 든 데이터베이스가 사용자 이름 (열)을 varchar에서 int로 변환하려고한다는 것입니다.은 SQL 테이블에 삽입하는 동안 varchar를 int로 변환합니다.

string Query = "Insert into Users(FirstName, LastName, Username, 
       Password, Role, Email, Class) values('" + txtfn.Text + "', 
       '" + txtsn.Text + "','" + txtUsername.Text + "','" + txtPassword.Text + "', 
       '" + cbRole.Text + "','" + txtEmail.Text + "','" + cbClass.Text + "')"; 

The error that pops-ups everytime a user is trying to sign up

가 어떻게 이런 일이 발생 변환을 방지 할 수 있습니다 또는이 오류를 처리하는 다른 방법은 다음과 같습니다이 내 삽입 쿼리입니까? 미리 감사드립니다.

+1

Users 테이블에 CREATE TABLE 문을 게시 할 수 있습니까? – Mangist

+0

'사용자 이름'열의 데이터 유형은 무엇입니까? 'txtUsername.Text'의 값은 무엇입니까? –

+3

SQL 인젝션주의! 죽음! ADO.NET 매개 변수를 사용하십시오. –

답변

2

다음은 SQL 매개 변수를 사용하고 유형을 지정하는 방법입니다. 어느 것이 더 안전하고 정확하며 일부 유형 (예 : DateTime)에 대한 변환을 처리합니다.

0

귀하의 username SQL 테이블의 열은 정수를 필요로하며 여기서 문자열을 전달합니다. 따라서 username 열 데이터 형식을 varchar 테이블로 변경하십시오. 그것은 잘 작동합니다. 희망은 분명하다.

+0

예외를 확인 했습니까? 먼저 사용자 이름을 int로 변환하려고하면 sqlexception이 실패합니다. 그것은 정수를 기대하고 변환하려고 시도하고 실패했음을 의미합니다. –

+0

그게 내가 열이 정수를 기대하고 있으며 여기에 그가 varchar를 전달하는 어떤 가치가 있는지를보고 말하는 것이다. –

+0

create table 스크립트를 게시하면 문제에 대한 구체적인 설명을 더 쉽게 제공 할 수 있습니다. –

관련 문제