我正在尝试将excel文件中的数据导入我的数据库。我有一个OleDBDataAdapter用于从excel文件中读取数据,还有两个OleDBDataAdapter用于将数据插入到SQL Server 2008 Express数据库的两个表中。执行代码后,SQL数据库中的表将填充正确数量的新行,但仅包含空值。调试向我显示正确地从excel文件中读取数据,并且值正确地插入到相应的DataTable对象中。也许我对insert命令的参数做错了?代码如下:
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))
答案 0 :(得分:0)
我不打算通过所有这些,但是当你这样做时:
objAdapterDBDuznik.InsertCommand.Parameters.Add("ZavedenKodPov", Data.OleDb.OleDbType.VarWChar)
您还需要这样做:
objAdapterDBDuznik.InsertCommand.Parameters["ZavedenKodPov"].Value = yourValue
您正在添加参数,但不会在其中添加值。无论如何,这就是我的样子。如果这没有用,或者我在这里错过了什么,请告诉我。