【发布时间】:2013-01-20 12:59:09
【问题描述】:
我知道这个问题已经被问过一百次了,而且我都看了一遍,不知道出了什么问题。 这是访问中的表:
tbl_Slip
SlipNo*,
EmpID,
ScaleID,
Month-Year,
RaiseBasic,
OtherDed,
Tax,
Arrears,
Notes,
所有字段都是整数类型,除了月-年和注释是文本。
现在是 C# 部分: 这是我使用的代码。 我试图找出错误,所以制作了一个带有硬编码值的按钮。
(oledbConnection 工作正常。我用它在表单上显示数据)
我用这个函数链接到 tbl_Slip。
private void linkToSlip()
{
con.Open();
string sqlRecords = "Select * FROM tbl_Slip ORDER BY SlipNo";
SlipDA = new OleDbDataAdapter(sqlRecords, con);
SlipDA.Fill(SlipDS, "Slip");
// Primary key so DataTable.Rows.Find[] can be used
SlipDS.Tables["Slip"].PrimaryKey = new DataColumn[] { SlipDS.Tables["Slip"].Columns["SlipNo"] };
maxSlipRows = SlipDS.Tables["Slip"].Rows.Count;
dataGrid_Slip.DataSource = SlipDS;
dataGrid_Slip.DataMember = "Slip";
con.Close();
}
这是表单加载部分:
private void frm_Slip_Load(object sender, EventArgs e)
{
SlipDS = new DataSet();
createcon();
linkToSlip();
}
(createcon是我用来连接数据库的函数)
这是按钮代码:
private void button1_Click(object sender, EventArgs e)
{
OleDbCommandBuilder saveCB = new OleDbCommandBuilder(SlipDA);
DataRow dR = SlipDS.Tables["Slip"].NewRow();
dR[0] = Convert.ToInt32("2");
dR[1] = Convert.ToInt32("1");
dR[2] = Convert.ToInt32("1");
dR[3] = "January-2013";
dR[4] = Convert.ToInt32("15");
dR[5] = Convert.ToInt32("20");
dR[6] = Convert.ToInt32("2");
dR[7] = Convert.ToInt32("223");
dR[8] = "notes";
SlipDS.Tables["Slip"].Rows.Add(dR);
saveCB.DataAdapter.Update(SlipDS.Tables["Slip"]);
maxSlipRows++;
}
当我按下按钮时,给出的错误是
INSERT INTO 语句中的语法错误。
我不知道是什么问题。我检查了重复,我检查了数据是否保存在 SlipDS.Tables["Slip"] (IT WAS) 中。我想不出别的了。
怎么了?
【问题讨论】:
-
您知道
dR[0] = Convert.ToInt32("2");与dr[0] = 2;相同,只是使用了更多的单词和运行时间? -
是的,但我尝试了一切可以让它发挥作用的方法!!!
标签: c# ms-access dataset oledb