Вставьте значение в таблицу SQL Server - PullRequest
0 голосов
/ 23 марта 2012

Имя моей таблицы installation_status и содержит столбцы типа

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

Для вставки значений текстового поля в примечания и статус одновременно для вставки значения insallationid из другой таблицы с именем

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

Я хочу, чтобы требуемый o / p выглядел следующим образом

installationid  remarks  status
73              asd       xxx

значение 73 получено из столбца таблицы установки

installationid(primarykey(identity(1,1))

Mmy .net код

 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

Просьба помочь мне получить требуемое о / п

1 Ответ

0 голосов
/ 23 марта 2012

Ваша проблема в основном связана с тем, что вы выполняете 2 отдельных оператора INSERT, где вы должны выполнять только 1.

Второе утверждение INSERT совершенно неверно:

INSERT INTO installation_status1 (installation_id)select installation_id FROM installation1

Этот оператор будет вставлять новые записи с нулевыми значениями для столбца remarks и столбца status; когда вы выполняете этот оператор, то для каждой записи в таблице установки в это время вы будете вставлять новую соответствующую запись в таблицу установки_статус1. Я уверен, что это совсем не то, что вы хотите.

Ваше первое выражение INSERT должно выглядеть примерно так:

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

(Дополнительное примечание. При таком подходе вы потенциально можете открыть себя для «SQL-инъекции», поскольку похоже, что вы непосредственно вставляете пользовательский ввод в свой запрос. Попробуйте вместо этого использовать параметры .)

Я добавил столбец installation_id в оператор вставки, а также указал значение этого столбца с помощью (в настоящее время неопределенной) переменной с именем installationId. Вам нужно будет выяснить, как заполнить переменную instalId; Ваше приложение должно заранее знать, к какой «установке» пользователь пытается применить замечания и статус, а это означает, что до того, как вы достигнете этой точки, ваше приложение должно уже знать, какой правильный installationId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...