이미 기존 DBF 파일에 명령을 삽입하는 데 문제가 있습니다. 내 변수 fullpath에 = "C : \ Kasa_NMP \ MAT_DAY.dbf"...이를 실행 한 후기존 DBF 파일에 어떻게 삽입합니까?
내가 얻을 :
유형의 처리되지 않은 예외 'System.Data.OleDb .OleDbException 'System.Data.dll에서 이 발생했습니다.
추가 정보 : INSERT INTO 문에 구문 오류가 있습니다. 내가 '넣어하려고하면
'내 fullpath에 주위 변수를 내가 얻을 :
는유형의 처리되지 않은 예외 'System.Data.OleDb.OleDbException' 이가 system.data.dll에서 발생
추가 정보 : 쿼리의 구문 오류. 불완전한 쿼리 절.
public static void DataTableToDBF(string filePath, string fileName, DataTable dataTable)
{
string fullPath = filePath + fileName + ".dbf";
using (OleDbConnection con = new OleDbConnection(GetConnection(filePath)))
{
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
foreach (DataRow row in dataTable.Rows) // Insert redaka u DBF file
{
string insertCommand = "INSERT INTO " + fullPath + "(datum1, faktura, sifra_dob, sifra, naziv_art, ulaz, izlaz," +
" jed_cijena, duguje, potrazuje, tarifa, rabat, n, pla, op, nab_cijena, porez_pr, sif_kup, time)" +
" VALUES(@datum, @faktura, @sifra_dob, @sifra, @naziv_art, @ulaz, @izlaz, @jed_cijena, @duguje, @potrazuje," +
" @tarifa, @rabat, @n, @pla, @op, @nab_cijena, @porez_pr, @sif_kup, @time)";
cmd.Parameters.AddWithValue("@datum", DateTime.Parse(row["Datum_k"].ToString()).ToShortDateString());
cmd.Parameters.AddWithValue("@faktura", row["Dokument"]);
cmd.Parameters.AddWithValue("@sifra_dob", row["BarKod"]);
cmd.Parameters.AddWithValue("@sifra", row["Sifra"]);
cmd.Parameters.AddWithValue("@naziv_art", row["NazivArtikla"]);
cmd.Parameters.AddWithValue("@ulaz", row["Ulaz"]);
cmd.Parameters.AddWithValue("@izlaz", row["Izlaz"]);
cmd.Parameters.AddWithValue("@jed_cijena", row["Cijena"]);
cmd.Parameters.AddWithValue("@duguje", row["Duguje"]);
cmd.Parameters.AddWithValue("@potrazuje", row["Potrazuje"]);
cmd.Parameters.AddWithValue("@tarifa", row["Tarifa"]);
cmd.Parameters.AddWithValue("@rabat", row["Rabat"]);
cmd.Parameters.AddWithValue("@n", 0);
cmd.Parameters.AddWithValue("@pla", row["Placanje"]);
cmd.Parameters.AddWithValue("@op", row["Operator"]);
cmd.Parameters.AddWithValue("@nab_cijena", row["NabavnaCijena"]);
cmd.Parameters.AddWithValue("@porez_pr", row["Porez"]);
cmd.Parameters.AddWithValue("@sif_kup", row["SifraKomitenta"]);
cmd.Parameters.AddWithValue("@time", row["Vrijeme"]);
cmd.CommandText = insertCommand;
cmd.ExecuteNonQuery();
}
con.Close();
}
}
private static string GetConnection(string path)
{
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=dBASE IV;";
}
put "cmd.CommandText = insertCommand;" in the paramters – BugFinder
필드 중 하나에 대해 예약어를 사용하고있는 것 같습니다. - Time - 그 단어를 대괄호 안에 넣으라고 제안합니다. _..., sif_kup, [time]) "_ – Steve
@Steve 아마 지금은 작은 분야에 대한 새로운 예외가 생겼지 만 고맙겠습니다. - 답으로 써야합니다 ... – ChenChi