【发布时间】:2019-01-23 10:50:41
【问题描述】:
我有一个表单,用户可以在其中键入和选择多个控件,例如下拉列表、日期时间选择器、文本框、复选框等。在按钮单击事件中,我编写了以下过程来插入 MS Access 数据库中的新记录: 代码:
private void InsertNewRecord()
{
txtLastUpdated.Text = DateTime.Today.ToString();
using (var conn = new OleDbConnection(MTSConn))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = @"Insert Into Incoming_T (DocFrom, CntrTeam, To, ReferenceNo, Subject, Review, Type, DocDate, RcvdDate, ProjectRef, DIMSNo, DIMSLink, SnrEng, MailStatus, Comments, LogRegID, RegisteredBy, UpdatedBy, LastUpdated, ForInf, ForReview, ForApp, ForComnt, ForHndlng, ForAct) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 100) { Value = cbxFrom.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxTo.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 100) { Value = cbxTo.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtReference.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 200) { Value = txtSubject.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 1) { Value = cbxReview.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 10) { Value = cbxDocType.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = dtpDocDate.Value });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = dtpRcvDate.Value });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxProject.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 15) { Value = txtDIMS.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 255) { Value = txtDIMLink.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 10) { Value = cbxSnrEngr.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxStatus.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 255) { Value = txtComments.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Integer, 4) { Value = Convert.ToInt32(txtRegID.Text) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtRegBy.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtUpdatedBy.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = Convert.ToDateTime(txtLastUpdated.Text) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkInf.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkRw.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkApp.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkComm.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkHandl.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkAct.Checked) });
try
{
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Recored Inserted Successfully!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
将记录插入 Access 数据库时出现语法错误。我也尝试了这段代码,但同样的问题:
private void InsertNewRecord()
{
txtLastUpdated.Text = DateTime.Today.ToString();
using (OleDbConnection conn = new OleDbConnection(MTSConn))
{
using (OleDbCommand cmd = new OleDbCommand())
{
.
.
.
}
}
我错过了什么吗?
【问题讨论】: