C# 增加ACCESS数据出问题了,请大大帮忙看看。

paigus 2009-03-22 07:14:25
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection coon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\famliy.mdb;");
coon.Open();
string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;
int count = (int)cmd.ExecuteNonQuery(); --- 这里报错:查询值的数目与目标字段中的数目不同
if (count > 0)
{
MessageBox.Show("增加成功");
}


查询倒是可以用,就是增加报错,本来我是整SQL2005的,但是没办法必须要转换成ACCESS的数据库,请各位帮忙看看
...全文
173 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwtoob 2010-04-21
  • 打赏
  • 举报
回复
数据库后面就别写列名了
hh_longke 2009-06-05
  • 打赏
  • 举报
回复
不知道你解决了没有
我以前也碰到类似的问题
正解是:
string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;
hh_longke 2009-06-05
  • 打赏
  • 举报
回复
不知道你解决了没有
我以前也碰到类似的问题
正解是:
string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;
hh_longke 2009-06-05
  • 打赏
  • 举报
回复
不知道你解决了没有
我以前也碰国类似的问题
正解是:
string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;
jdhlowforever 2009-05-05
  • 打赏
  • 举报
回复
string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;


string sql="insert into Familyjcaname(famNo,famfamNamejc) values(@1)";
感觉是这样错了。。
hjx_gb2000 2009-03-25
  • 打赏
  • 举报
回复
我也有过类似的问题,而且很奇怪的。
我也是直接用SQLSERVER2005直接导出给ACCESS的,然后也在ACCESS这边修改了自增列。
有两张表,前面一张表做的没问题,但是第二张表给前面类似的,可是插入语句就是一直报错,更新也不行,只有删除没问题,对ACCESS真是不会用,还望下面有高人继续指点啊
delphi_new 2009-03-22
  • 打赏
  • 举报
回复
楼主你真逗,你的SQL语句错误了
wuyi8808 2009-03-22
  • 打赏
  • 举报
回复
没有缺省值的字段都要赋值的。
paigus 2009-03-22
  • 打赏
  • 举报
回复
我在用SQ2005转一次..
wuyi8808 2009-03-22
  • 打赏
  • 举报
回复
Familyjcname表中可能还有其他字段你没有给它们赋值。
paigus 2009-03-22
  • 打赏
  • 举报
回复
我是SQL2005数据库直接转ACCESS的,自动增长列在ACCESS里面也增加了
paigus 2009-03-22
  • 打赏
  • 举报
回复
还是报错,我上图给大家看

wuyi8808 2009-03-22
  • 打赏
  • 举报
回复
insert into Familyjcname(famfamNamejc) values(@f1)

这样数目已经一致了。除非你的famNo不是自动增长的。

你可以把下面的语句在 Access 中执行一下看会不会出错:
insert into Familyjcname(famfamNamejc) values('abcd')
paigus 2009-03-22
  • 打赏
  • 举报
回复
查询值的数目与字段中的数目不同 报的这个错。
wuyi8808 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 paigus 的回复:]
但是第一个键是自动增长的,
string sql = "insert into Familyjcname(famfamNamejc) values(@f1)";
还是会报错。
[/Quote]

错误信息是什么?

自动增长列是不能写在insert的字段列表中的。
tommir3 2009-03-22
  • 打赏
  • 举报
回复
string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";
OleDbCommand cmd = new OleDbCommand(sql, coon);
cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;

把你的textBox1.Text的值换一个值,如;"AAA"...
看还会出错不,感觉可能是传入的变量出问题了.
paigus 2009-03-22
  • 打赏
  • 举报
回复
string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)"; -- 其中famNo是自动增长列。

string sql = "insert into Familyjcname(famfamNamejc) values(@f1)";
这样行不通的。
tommir3 2009-03-22
  • 打赏
  • 举报
回复
string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";

很明显的错误...下面都不用看了
paigus 2009-03-22
  • 打赏
  • 举报
回复
但是第一个键是自动增长的,
string sql = "insert into Familyjcname(famfamNamejc) values(@f1)";
还是会报错。
zhangbo6791644 2009-03-22
  • 打赏
  • 举报
回复
我不是很理解呀,为什么你的sql语句里是插入两列数据,但是你给的参数是一个呀
加载更多回复(3)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧