как сохранить записи, введенные в datagrid, в базу данных sql

моя системная концепция такова. я сделал отображение столбцов из разных таблиц, используя внутреннее соединение.

мне трудно, потому что я думаю, что вы можете использовать команду вставки в sql только для одной таблицы за раз.

но моя сетка данных отображает разные столбцы, вызываемые из другой таблицы.

какова будет структура моего синтаксиса sql? а также вызов хранимой процедуры на vb.net 2003

спасибо всем идеям

ЭТО МОЙ СОХРАНЕННЫЙ ПРОЦЕСС SQL

CREATE PROCEDURE AddToOfficeEquipmentProfile AS

INSERT INTO dbo.tblOfficeEquipmentProfile(OE_ID
                                        , Report_ID
                                        , OE_Category
                                        , OE_SubCategory
                                        , OE_Name
                                        , OE_User
                                        , OE_Brand
                                        , OE_Model
                                        , OE_Specs
                                        , OE_SerialNo
                                        , OE_PropertyNo
                                        , OE_Static_IP
                                        , OE_Vendor
                                        , OE_PurchaseDate
                                        , OE_WarrantyInclusiveYear
                                        , OE_WarrantyStatus
                                        , OE_Status
                                        , OE_Dept_Code
                                        , OE_Location_Code
                                        , OE_Remarks)
VALUES
  (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
GO

ЭТО МОЙ КОД VB

Dim sqlconn As New SqlClient.SqlConnection
    sqlconn.ConnectionString = "server = SKPI-APPS1;" & _
    "Database = EOEMS;integrated security=true"

    Dim Command As SqlCommand = New SqlCommand
    Command.Connection = sqlconn
    Command.CommandText = "AddToOfficeEquipmentProfile"
    Command.CommandType = CommandType.StoredProcedure

    Dim sAdapter As SqlDataAdapter = New SqlDataAdapter(Command)
    Dim DataSet As DataSet = New DataSet(Command.CommandText)

    sAdapter.Fill(DataSet)
    DataGrid1.DataSource = DataSet.Tables(0)
    MsgBox(MsgBoxStyle.OKOnly, "YOU HAVE SUCCESSFULLY ADDED RECORDS TO THE TABLE")

он возвращает ошибку, указывающую на

 sAdapter.Fill(DataSet)

ВОТ МОЙ ВТОРОЙ КОД НИЖЕ БЕЗ ХРАНИМОЙ ПРОЦЕДУРЫ НЕ ТРЕБУЕТСЯ

    Dim adapter As New SqlDataAdapter
    Dim sql As String


    sql = "INSERT INTO tblOfficeEquipmentProfile(OE_ID, Report_ID, OE_Category, OE_SubCategory, OE_Name, OE_User, OE_Brand, OE_Model, OE_Specs, OE_SerialNo, OE_PropertyNo, OE_Static_IP, OE_Vendor, OE_PurchaseDate, OE_WarrantyInclusiveYear, OE_WarrantyStatus, OE_Status, OE_Dept_Code, OE_Location_Code, OE_Remarks)VALUES(DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)"
    Try
        sqlconn.Open()
        adapter.InsertCommand = New SqlCommand(sql, sqlconn)
        adapter.InsertCommand.ExecuteNonQuery()
        MsgBox("Row inserted !! ")
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

но все еще не работает


person ivandinglasan    schedule 19.03.2013    source источник
comment
@joshua [код] ВСТАВЬТЕ В ЧАСЫ ЗНАЧЕНИЯ (4, 'Нильсен', 'Йохан', 'Баккен 2', 'Ставангер') [/code]   -  person ivandinglasan    schedule 19.03.2013
comment
пожалуйста, добавьте это в свой вопрос, и вы вставляете только в одну таблицу?   -  person joshua    schedule 19.03.2013
comment
это пример кода для вставки записей в таблицу.. но все, что я знаю, это то, что вы можете вставлять записи только в одну таблицу за раз.. но мне нужно вставлять в разные таблицы одновременно. потому что я одновременно вызывал столбцы в разных таблицах, чтобы отобразить их в сетке данных   -  person ivandinglasan    schedule 19.03.2013
comment
затем вы просто добавляете несколько INSERT-кодов, а затем выполняете их одновременно.   -  person Kasnady    schedule 19.03.2013
comment
@ArwinZhang сэр, если бы это было так просто, я бы вообще не задавал вопросов, но спасибо за совет   -  person ivandinglasan    schedule 19.03.2013
comment
@ivandinglasan, это так же просто, как я и сказал. Я пробовал это раньше, код наверняка будет длинным, в зависимости от того, что вы хотите. Сначала попробовал и снова сказал, что за ошибка.   -  person Kasnady    schedule 19.03.2013
comment
@ArwinZhang, сэр, вот мои коды, пожалуйста, помогите мне пересмотреть, чтобы они работали.   -  person ivandinglasan    schedule 20.03.2013


Ответы (1)


Ваш код такой длинный, и я имею в виду...

 Try
                    con = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\notifdb.accdb")
                    Dim command As String
                    command = "INSERT INTO NFTB (NOTIF, EMP_NO, EMP_NAME, [POSITION]) VALUES (@NOTIF, @EMP_NO, @EMP_NAME, @POSITION)"
                    con.Open()
                    Dim cmd As OleDbCommand
                    cmd = New OleDbCommand(command, con)
                    cmd.Parameters.AddWithValue("@NOTIF", NOTIFTextBox.Text)
                    cmd.Parameters.AddWithValue("@EMP_NO", EMP_NOTextBox.Text)
                    cmd.Parameters.AddWithValue("@EMP_NAME", EMP_NAMETextBox.Text)
                    cmd.Parameters.AddWithValue("@POSITION", POSITIONTextBox.Text)
                    cmd.ExecuteNonQuery()
                Catch exceptionObject As Exception
                    MessageBox.Show(exceptionObject.Message)
                Finally
                    con.Close()
                End Try

Я только что сказал о коде вставки, кроме того, что вы должны сделать сами. И SQL никогда не имеет значения ПО УМОЛЧАНИЮ, вы должны изменить значение имени вашего столбца на что-то, а затем добавить к нему параметр, какое текстовое поле или поле в вашей форме будет вводиться в вашу базу данных.

person Kasnady    schedule 20.03.2013
comment
я знаю, что я должен сделать это сам, я просто спрашиваю идеи о том, как это пересмотреть. я имею в виду, какой будет структура кода. я попробую ваш код, сэр, спасибо, я отмечу его как правильный, когда он заработает - person ivandinglasan; 20.03.2013
comment
я заменил cmd = ...... своим синтаксисом sql, но. ошибка заключается в том, что она подчеркнута синей линией, говорящей, что тип значения «строка» не может быть преобразован в... - person ivandinglasan; 20.03.2013
comment
с или даже без его underligned синей линией .. CMD = INSERT INTO tblOfficeEquipmentProfile (OE_ID, REPORT_ID, OE_Category, OE_SubCategory, OE_Name, OE_User, OE_Brand, OE_Model, OE_Specs, OE_SerialNo, OE_PropertyNo, OE_Static_IP, OE_Vendor, OE_PurchaseDate, OE_WarrantyInclusiveYear, OE_WarrantyStatus, OE_Status , OE_Dept_Code, OE_Location_Code, OE_Remarks) ЗНАЧЕНИЯ (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) - person ivandinglasan; 20.03.2013
comment
почему ваше значение получило значение DEFAULT? Кроме того, значение и столбец, вы просто пишете, какой столбец вы хотите вставить, не нужно все... - person Kasnady; 20.03.2013
comment
Я не вижу ничего плохого при вставке в имя моей собственной таблицы (имена столбцов,... и т.д.... я думаю, что моя проблема по умолчанию, да, вы правы.. но если не по умолчанию, то как я могу сохранить данные, введенные в мою сетку данных и сохранить его на моем сервере sql? - person ivandinglasan; 20.03.2013
comment
Смотри ответ. У меня есть изменение для сохранения кода, вам просто нужно повторить вставку и параметр vavlue - person Kasnady; 20.03.2013
comment
Я начинаю понимать, что вы имеете в виду, сэр. последнее, это не поле текстового поля. это датасет? предполагая, что эта ПОЗИЦИЯ находится в строке 1 столбца 1, какой код я поставлю для POSITIONTextBox.Text [code] cmd.Parameters.AddWithValue(@POSITION, POSITIONTextBox.Text)[/code] - person ivandinglasan; 20.03.2013
comment
попробуйте проверить здесь stackoverflow.com/questions/9784301/ - person Kasnady; 20.03.2013