C# 带有参数化查询的INSERT INTO语句中出现语法错误
我正在用.NET和MS Access编写一个桌面软件,但是当我创建代码插入数据时,它抛出了一个异常,我尝试到处搜索,但仍然没有修复C# 带有参数化查询的INSERT INTO语句中出现语法错误,c#,ms-access,C#,Ms Access,我正在用.NET和MS Access编写一个桌面软件,但是当我创建代码插入数据时,它抛出了一个异常,我尝试到处搜索,但仍然没有修复 NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time), NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text), TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)
以下是我所有的专栏,忽略了不同的语言:
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)
这是我的c代码:
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)
private void btnSave_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=Databases/database.accdb;
Persist Security Info=False";
try
{
OleDbCommand cmd = conn.CreateCommand();
conn.Open();
string kelengkapan = "";
string status = "";
int totalBiaya = int.Parse(txtBiaya.Text) + int.Parse(txtTambahanBiaya.Text);
int labaRugi = totalBiaya - int.Parse(txtHargaSparepart.Text);
if (chckSIM.Checked)
kelengkapan += "SIM ";
if (chckMemory.Checked)
kelengkapan += "Memory ";
if (chckKondom.Checked)
kelengkapan += "Kondom ";
if (chckBaterai.Checked)
kelengkapan += "Baterai";
if (comboStatus.SelectedItem != null)
status = comboStatus.SelectedItem.ToString();
else
status = "BELUM DISETTING";
string cmdText = @"INSERT INTO DataServisan (Tanggal, NamaPelanggan, Alamat,
NoHP, TipeHP, Keluhan,
Kerusakan, KondisiHP, Kelengkapan,
Warna, KataSandi/Pola, DP,
Teknisi, Status, TanggalKonfirmasi,
IsiKonfirmasi, Biaya, TambahanBiaya,
TotalBiaya, HargaSparepart, Laba/Rugi)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
cmd.CommandText = cmdText;
cmd.Parameters.Add(new OleDbParameter { Value = DateTime.Now.ToString("dd-MM-yyyy") });
cmd.Parameters.Add(new OleDbParameter { Value = txtNamaPelanggan.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtAlamat.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtNoHP.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtTipeHP.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtKeluhan.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtKerusakan.Text });
cmd.Parameters.Add(new OleDbParameter { Value = txtKondisiHP.Text });
cmd.Parameters.Add(new OleDbParameter { Value = kelengkapan });
cmd.Parameters.Add(new OleDbParameter { Value = txtWarna.Text });
cmd.Parameters.Add(new OleDbParameter { Value = int.Parse(txtKataSandiPola.Text) });
cmd.Parameters.Add(new OleDbParameter { Value = int.Parse(txtDP.Text) });
cmd.Parameters.Add(new OleDbParameter { Value = txtTeknisi.Text });
cmd.Parameters.Add(new OleDbParameter { Value = status });
cmd.Parameters.Add(new OleDbParameter { Value = dateKonfirmasi.Value.ToString("dd-MM-yyyy") });
cmd.Parameters.Add(new OleDbParameter { Value = txtIsiKonfirmasi.Text });
cmd.Parameters.Add(new OleDbParameter { Value = int.Parse(txtBiaya.Text) });
cmd.Parameters.Add(new OleDbParameter { Value = int.Parse(txtTambahanBiaya.Text) });
cmd.Parameters.Add(new OleDbParameter { Value = totalBiaya });
cmd.Parameters.Add(new OleDbParameter { Value = txtHargaSparepart.Text });
cmd.Parameters.Add(new OleDbParameter { Value = labaRugi });
cmd.ExecuteNonQuery();
MessageBox.Show("Berhasil!", "Transaksi Servis");
this.Close();
}
catch (Exception ex)
{
MessageBox.Show("An error has occurred: " + ex);
}
finally
{
conn.Close();
}
}
您需要引用包含斜杠的列,因此在insert语句中,更改:
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)
KataSandi/Pola to[KataSandi/Pola]
拉巴/鲁吉至[拉巴/鲁吉]
通常应避免在列名中使用此类字符。这会使代码更难阅读。在阅读时,你的头脑可能首先认为它是一个划分,然后才意识到它是一个列名
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)
如果没有显式引用,解析器也会遇到同样的问题,除非它抛出了一个语法错误,而没有意识到它毕竟是一个列名。您遇到了什么异常?我得到的是System.Data.OleDb.OLEDBEException 0x80040E14:INSERT INTO语句中的语法错误。+1 thx我更改了名称,使其没有斜杠,并在代码中设置,使datagridview有斜杠。
NomorNota (AutoNumber, PrimaryKey), Tanggal (Date/Time),
NamaPelanggan (Long Text), Alamat (Long Text), NoHP(Long Text),
TipeHP (Long Text), Keluhan (Long Text), Kerusakan (Long Text),
KondisiHP (Long Text), Kelengkapan (Long Text), Warna (Long Text),
KataSandi/Pola (Number), DP (Currency), Teknisi (Long Text), Status (Long Text),
TanggalKonfirmasi (Date/Time), IsiKonfirmasi (Long Text),
Biaya (Currency), TambahanBiaya (Currency), TotalBiaya (Currency),
HargaSparepart (Currency), Laba/Rugi (Currency)