2017-12-31 129 views
0

나는 주문 관리 시스템을 만들었으므로이 코드를 사용하여 데이터에 주문을 삽입했다.수동으로 ID를 증가 시킴 C#에서 mysql

xconn.Open(); 
MySqlCommand cmd = new MySqlCommand(); 
cmd.CommandText = "insert into tblOrder 
(RegId,ItmId,quantity,Odrdate,Total) values ('" + label11.Text + "','" + 
26 + "','" + txt26.Text + "','" + date + "','" + lbltotal.Text + "');"; 
cmd.Connection = xconn; 
cmd.ExecuteNonQuery(); 
xconn.Close(); 

내 테이블의 주문 ID는 자동 증가이지만 하나의 주문이 완료된 후에 만 ​​증가합니다.

일단 내가 총을 클릭하면 다음 순서가 새로운 ID를 얻도록 odrid가 증가해야합니다.

+2

코드가 SQL 삽입 공격에 취약합니다. 누군가가 쉽게 데이터를 엉망으로 만들 수 있습니다. 설명 및 매개 변수화 된 쿼리 및 준비된 문을 사용하여 올바르게 수행하는 방법에 대한 예제는 http://bobby-tables.com/을 참조하십시오. 또한이 간단한 문자열 연결을 수행하여 쿼리를 작성할 때 가능한 구문 오류를 방지하는 데 도움이됩니다. – ADyson

+0

귀하의 질문에 관해서 - 당신이 INSERT를 할 경우, 올바르게 설정되었다고 가정하면 필드는 자동 증가합니다. 쿼리를 실행 한 직후 데이터베이스에서 마지막으로 삽입 한 ID를 가져 오는 경우 필요한 경우 최신 ID의 값을 확인할 수 있습니다. 그러나 "클릭 합계"에 대한 언급에 대한 컨텍스트가 충분하지 않습니다. 여기에는 버튼이 없습니다. 그게 당신의 코드와 어떤 관련이 있습니까? – ADyson

+0

잘 대학 프로젝트에 사용하고 있으며 마감일은 내일입니다. 그래서 당신이이 코드에서 나를 도울 수 있다면 그것은 좋을 것이다. –

답변

0

id가 기본 키인 경우 고유 한 ID가없는 데이터베이스 테이블에 새 행을 삽입 할 수 없습니다.

왜 현재 주문의 상태를 저장하는 "order_status"라는 새 열을 소개하지 않습니까?

0

일단 내가 총계를 클릭하면 다음 주문이 새 ID가되도록 오름차순이 증가합니다.

예를 들어 993을 클릭하고 994를 원하지만 데이터베이스에 이미 존재하는 경우 orderId가있는 경우 어떻게됩니까?

다른 제안에 따르면 +1에 관한 정보가있는 열을 넣을 수 있습니다. 프로덕션 환경에서 현재 코드를 사용하고 있다면 SQL 인젝션을 사용하여 코드를 쉽게 해킹 할 수 있습니다.