2012-03-23 4 views
-1

내 테이블 이름은 installation_status이며삽입 값은

라는 이름으로 다른 테이블에서 insallationid의 값을 삽입하는 동시에 발언에 & 상태를 텍스트 상자에 값을 삽입하려면

installationid (fk) 
remarks (varchar) 
status (varchar) 

같은 열이 포함되어 있습니다

(installation)column (installatioid(primary key,identity)). 

나는이

installationid remarks status 
73    asd  xxx 
과 같은 필요한 O/P 모양을 원하는 16,

값 73이 설치 테이블 열에서 얻을 수있다

installationid(primarykey(identity(1,1)) 

MMY .NET 코드는 필요한 얻을

PLS 나에게 도움/P O를 획득

con = New SqlConnection("server=(local)\sqlexpress;Database=service_request; Uid=service_request;Pwd=test123; ") 
con.Open() 
Try 
     Dim s2 As String 
     s2 = DropDownList4.SelectedItem.Value.ToString 
     cmd = New SqlCommand("insert into installation_status1 (status1,remarks)values('" + s2 + "','" + txtrmks.Text + "')", con) 
     cmd.ExecuteNonQuery() 

     cmd1 = New SqlCommand("INSERT INTO installation_status1 (installation_id)select installation_id FROM installation1", con) 
     cmd1.ExecuteNonQuery() 
    Catch ex As Exception 
     Lblmsg.Text = "error in recording the information: " + ex.Message 
    End Try 
    con.Close()  

null asd xx 
78  null null 
을 좋아하다 o/p

+0

피벗 쿼리가 필요합니다. BooksOnline에서 찾으십시오. – Asdfg

+0

SQL 이해에 어려움을 겪고있는 것처럼 보입니다. 이는 세트 기반 언어입니다. 그것은 VB, C#, 그리고 많은 다른 언어와 같은 진보적 인 것이 아닙니다. 어떤 시점에서 installation1 테이블에는 많은 레코드가 있으므로 사용자가 특정 설치에 대한 새로운 installation_status1 레코드를 삽입하려고 할 때 응용 프로그램이 사용자가 어떤 설치에 대해 이야기하고 있는지를 어떻게 알 수 있습니까? 문제를 해결하기 위해 대답해야 할 주요 질문입니다. –

답변

0

귀하의 문제는 주로 귀하가 pe 당신은 단지 1

두 번째 INSERT 문을 수행해야이 별도의 INSERT 문을 rforming하는 것은 완전히 잘못된 것입니다 :

INSERT INTO installation_status1 (installation_id)select installation_id FROM installation1 

remarks 열과 status 열에 null 값을 가진 새로운 레코드를 삽입 할이 문; 이 명령문을 실행하면 그 당시에는 installation1 테이블의 모든 레코드에 대해 새 해당 레코드를 installation_status1 테이블에 삽입하게됩니다. 나는 이것이 당신이 원하는 바가 아님을 확신합니다. 당신이 직접 사용자 입력을 삽입하는 것처럼 보이기 때문에, 당신은 잠재적으로 이러한 접근 방식을 "SQL 주입을"자신을 열고 있습니다 :

insert into installation_status1 (installation_id,status1,remarks)values(" + installationId + ",'" + s2 + "','" + txtrmks.Text + "') 

(사이드 참고 :

첫 번째 INSERT 문은 다음과 같이 보일 것이다 귀하의 요청으로. 대신 parameters을 사용하는 것이 좋습니다.)

나는 삽입 문에 installation_id 열을 추가 한, 나는 또한 installationId라는 이름의 (현재 정의되지 않은) 변수를 사용하여 해당 컬럼의 값을 지정했습니다. installationId 변수를 채우는 방법을 알아야합니다. 응용 프로그램은 미리 사용자가 발언과 상태를 적용하려고하는 "설치"를 미리 알아야합니다. 즉,이 시점에 도달하기 전에 응용 프로그램이 올바른 installationId이 무엇인지를 이미 알고 있어야합니다.