ASP.NET 4 Команда вставки OleDBDataAdapter вставляет нулевые значения в таблицу вместо предоставленных значений - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь импортировать данные из файла Excel в мою базу данных.У меня есть один OleDBDataAdapter для чтения данных из файла Excel и два OleDBDataAdapter для вставки данных в две таблицы в моей базе данных SQL Server 2008 Express.После выполнения кода таблицы в базе данных SQL заполняются правильным количеством новых строк, но содержат только нулевые значения.Отладка показала, что данные правильно считываются из файла Excel и что значения правильно вставляются в соответствующие объекты DataTable.Может я что-то не так сделал с параметрами команды вставки?Код выглядит следующим образом:

    Dim fajl As String

    fajl = MapPath("fajlovi/" + Request.QueryString("ID"))


    Dim sConnectionStringExcel As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fajl & ";Extended Properties=Excel 8.0;"
    Dim objConnExcel As New OleDbConnection(sConnectionStringExcel)
    objConnExcel.Open()
    Dim objCmdSelectExcel As New OleDbCommand("SELECT ZavedenKodPov, Ime, Mjesto, Adresa, JMBG, LicniBroj, ZaposlenKod, Nepoznat, Umro, Penzioner, Reon, VoziloProizvodjac, VoziloModel, VoziloRegistracija, Nekretnina, Datum, KontoBroj, NazivKonta, OpisPromjene, Dug, Pot FROM [Sheet1$]", objConnExcel)
    Dim objAdapterExcel As New OleDbDataAdapter()
    objAdapterExcel.SelectCommand = objCmdSelectExcel
    Dim objDatasetExcel As New DataSet()
    objAdapterExcel.Fill(objDatasetExcel, "XLData")
    Dim tExcel As DataTable
    tExcel = objDatasetExcel.Tables(0)

    Dim sConnectionStringDB As String = "Provider=SQLOLEDB;Data Source=WORKHORSE\sqlexpress;Initial Catalog=prinudna_testdb;Persist Security Info=True;User ID=korisnik;Password=**********"
    Dim objConnDB As New OleDbConnection(sConnectionStringDB)
    objConnDB.Open()

    Dim objCmdSelectDBDuznik As New OleDbCommand("SELECT ZavedenKodPov, Ime, Mjesto, Adresa, JMBG, LicniBroj, ZaposlenKod, Nepoznat, Umro, Penzioner, Reon, VoziloProizvodjac, VoziloModel, VoziloRegistracija, Nekretnina FROM tmpImportDuznik")
    Dim objCmdInsertDBDuznik As New OleDbCommand("INSERT INTO tmpImportDuznik (ZavedenKodPov, Ime, Mjesto, Adresa, JMBG, LicniBroj, ZaposlenKod, Nepoznat, Umro, Penzioner, Reon, VoziloProizvodjac, VoziloModel, VoziloRegistracija, Nekretnina) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
    Dim objAdapterDBDuznik As New OleDbDataAdapter()
    objAdapterDBDuznik.InsertCommand = objCmdInsertDBDuznik
    objAdapterDBDuznik.SelectCommand = objCmdSelectDBDuznik
    objAdapterDBDuznik.InsertCommand.Connection = objConnDB
    objAdapterDBDuznik.SelectCommand.Connection = objConnDB
    objAdapterDBDuznik.InsertCommand.Parameters.Add("ZavedenKodPov", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Ime", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Mjesto", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Adresa", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("JMBG", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("LicniBroj", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("ZaposlenKod", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Nepoznat", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Umro", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Penzioner", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Reon", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("VoziloProizvodjac", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("VoziloModel", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("VoziloRegistracija", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBDuznik.InsertCommand.Parameters.Add("Nekretnina", Data.OleDb.OleDbType.VarWChar)
    Dim objDatasetDBDuznik As New DataSet()
    objAdapterDBDuznik.Fill(objDatasetDBDuznik, "tmpImportDuznik")
    Dim tDBDuznik As DataTable
    tDBDuznik = objDatasetDBDuznik.Tables(0)
    Dim nRowDuznik As Data.DataRow

    Dim objCmdSelectDBKartica As New OleDbCommand("select ZavedenKodPov, Datum, KontoBroj, NazivKonta, OpisPromjene, Dug, Pot FROM tmpImportKartica")
    Dim objCmdInsertDBKartica As New OleDbCommand("INSERT INTO tmpImportKartica (ZavedenKodPov, Datum, KontoBroj, NazivKonta, OpisPromjene, Dug, Pot) VALUES (?, ?, ?, ?, ?, ?, ?)")
    Dim objAdapterDBKartica As New OleDbDataAdapter()
    objAdapterDBKartica.InsertCommand = objCmdInsertDBKartica
    objAdapterDBKartica.SelectCommand = objCmdSelectDBKartica
    objAdapterDBKartica.InsertCommand.Connection = objConnDB
    objAdapterDBKartica.SelectCommand.Connection = objConnDB
    objAdapterDBKartica.InsertCommand.Parameters.Add("ZavedenKodPov", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBKartica.InsertCommand.Parameters.Add("Datum", Data.OleDb.OleDbType.Date)
    objAdapterDBKartica.InsertCommand.Parameters.Add("KontoBroj", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBKartica.InsertCommand.Parameters.Add("NazivKonta", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBKartica.InsertCommand.Parameters.Add("OpisPromjene", Data.OleDb.OleDbType.VarWChar)
    objAdapterDBKartica.InsertCommand.Parameters.Add("Dug", Data.OleDb.OleDbType.Decimal)
    objAdapterDBKartica.InsertCommand.Parameters.Add("Pot", Data.OleDb.OleDbType.Decimal)
    Dim objDatasetDBKartica As New DataSet()
    objAdapterDBKartica.Fill(objDatasetDBKartica, "tmpImportKartica")
    Dim tDBKartica As DataTable
    tDBKartica = objDatasetDBKartica.Tables(0)
    Dim nRowKartica As Data.DataRow

    Dim i As Integer

    For i = 0 To tExcel.Rows.Count - 1
        nRowDuznik = tDBDuznik.NewRow()
        nRowDuznik.Item("ZavedenKodPov") = tExcel.Rows(i).Item("ZavedenKodPov")
        nRowDuznik.Item("Ime") = tExcel.Rows(i).Item("Ime")
        nRowDuznik.Item("Mjesto") = tExcel.Rows(i).Item("Mjesto")
        nRowDuznik.Item("Adresa") = tExcel.Rows(i).Item("Adresa")
        nRowDuznik.Item("JMBG") = tExcel.Rows(i).Item("JMBG")
        nRowDuznik.Item("LicniBroj") = tExcel.Rows(i).Item("LicniBroj")
        nRowDuznik.Item("ZaposlenKod") = tExcel.Rows(i).Item("ZaposlenKod")
        nRowDuznik.Item("Nepoznat") = tExcel.Rows(i).Item("Nepoznat")
        nRowDuznik.Item("Umro") = tExcel.Rows(i).Item("Umro")
        nRowDuznik.Item("Penzioner") = tExcel.Rows(i).Item("Penzioner")
        nRowDuznik.Item("Reon") = tExcel.Rows(i).Item("Reon")
        nRowDuznik.Item("VoziloProizvodjac") = tExcel.Rows(i).Item("VoziloProizvodjac")
        nRowDuznik.Item("VoziloModel") = tExcel.Rows(i).Item("VoziloModel")
        nRowDuznik.Item("VoziloRegistracija") = tExcel.Rows(i).Item("VoziloRegistracija")
        nRowDuznik.Item("Nekretnina") = tExcel.Rows(i).Item("Nekretnina")
        tDBDuznik.Rows.Add(nRowDuznik)

        If Not (IsDBNull(tExcel.Rows(i).Item("ZavedenKodPov"))) Then
            nRowKartica = tDBKartica.NewRow()
            nRowKartica.Item("ZavedenKodPov") = tExcel.Rows(i).Item("ZavedenKodPov")
            nRowKartica.Item("Datum") = tExcel.Rows(i).Item("Datum")
            nRowKartica.Item("KontoBroj") = tExcel.Rows(i).Item("KontoBroj")
            nRowKartica.Item("NazivKonta") = tExcel.Rows(i).Item("NazivKonta")
            nRowKartica.Item("OpisPromjene") = tExcel.Rows(i).Item("OpisPromjene")
            nRowKartica.Item("Dug") = tExcel.Rows(i).Item("Dug")
            nRowKartica.Item("Pot") = tExcel.Rows(i).Item("Pot")
            tDBKartica.Rows.Add(nRowKartica)
        End If

    Next
    objAdapterDBDuznik.Update(objDatasetDBDuznik.Tables(0))
    objAdapterDBKartica.Update(objDatasetDBKartica.Tables(0))

1 Ответ

0 голосов
/ 21 декабря 2011

Я не собираюсь проходить все из них, но когда вы сделаете это:

objAdapterDBDuznik.InsertCommand.Parameters.Add("ZavedenKodPov", Data.OleDb.OleDbType.VarWChar)

Вы также должны сделать это:

objAdapterDBDuznik.InsertCommand.Parameters["ZavedenKodPov"].Value = yourValue

Вы добавляете параметры, но не вводите в них значения. Вот так все и выглядит для меня. Дайте мне знать, если это не поможет, или я что-то здесь упустил.

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