データをExcelデータベースからデータベースにインポートしようとしています。 Excelファイルからデータを読み取るための1つのOleDBDataAdapterと、SQL Server 2008 Expressデータベースの2つのテーブルにデータを挿入する2つのOleDBDataAdapterがあります。コードを実行した後、SQLデータベース内のテーブルには正しい数の新しい行が格納されますが、NULL値のみが格納されます。デバッグでは、データがExcelファイルから正しく読み取られ、値が対応するDataTableオブジェクトに正しく挿入されていることがわかりました。たぶんinsertコマンドのパラメータに何か問題がありましたか?次のようにコードは次のとおりです。ASP.NET 4 OleDBDataAdapter Insertコマンドは、指定された値ではなく、テーブルにNULL値を挿入します。
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))
実際の問題は、パラメータに値を供給されなかったが、代わりにあなたが示唆したように、それらを直接供給すること、私はつまり、これを実行した後、すべてのパラメータのSourceColumnプロパティを設定しました: 'objAdapterDBDuznik.InsertCommand.Parameters.Addを。 'objAdapterDBDuznik.InsertCommand.Parameters( "IME")と、SourceColumn = "IME"' – rnkjnk
@rnkjnkいずれかの方法:( "IME"、Data.OleDb.OleDbType.VarWCharは) ' は私もこれをしなければなりません。あなたがうまくいけばうれしいです、私は答えが何らかの形で助けてくれることを願っています。)あなたは望むならば、この答えの横にある上向き矢印またはチェックマークを使うことができます。 – jadarnel27
はい、ありがとう、あなたの答えは私に正しい方法を導いた!私はここで新しいので、私はあなたの答えをupvoteすることができないように見える、それは私がそれを行うために15の評判が必要と言う。とにかくありがとう! – rnkjnk