我做了个insert报的错误是“查询值的数目与目标字段中的数目不同”,我反复数了一下,我的参数和数据库了的字段是一样的啊?下面是我的代码大家帮着找找吧!
private void InsertCustomer(string customerName, string password, string realityName,string Province,string City, int customerType, string units, string photo, string duty, string attention, string email, int item)
{
string strSQL = "INSERT INTO CustomerTable VALUE('"+customerName+"','"+password+"','"+realityName+"','"+Province+"','"+City+"',"+customerType+",'"+units+"','"+photo+"','"+duty+"','"+attention+"','"+email+"',"+item+")";
OleDbHelper.ExecuteNonQuery(OleDbHelper.JetConnectionString,CommandType.Text,strSQL);
}
23 个解决方案
#1
数据库字段:
CustomerTPKID 自动编号
CustomerName 文本
Password 文本
RealityName 文本
Province 文本
City 文本
CustomerType 数字
Units 文本
Photo 文本
Duty 文本
Attention 文本
Email 文本
Item 数字
CustomerTPKID 自动编号
CustomerName 文本
Password 文本
RealityName 文本
Province 文本
City 文本
CustomerType 数字
Units 文本
Photo 文本
Duty 文本
Attention 文本
Email 文本
Item 数字
#2
可能因为自动编号,你老老实实用(CustomerName,....) Values(......)试试
#3
string strSQL = "INSERT INTO CustomerTable VALUE //应该是values吧
#4
InsertCustomer(1,"a","aa","asdf","asdf","asdf",1,"asdf","asdf","asdf","asdf","asdf",1);
我这样调用方法都可以写入到数据库,前面CustomerTPKID 的字段我也给了一个值,就好用,可是我不给值就报错。应该怎么调啊?
我这样调用方法都可以写入到数据库,前面CustomerTPKID 的字段我也给了一个值,就好用,可是我不给值就报错。应该怎么调啊?
#5
我用的是 values 让我该过来了
#6
我这么写说我“INSERT INTO 语句的语法错误。”
string strSQL = "insert into CustomerTable (CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) VALUES ('"+customerName+"','"+password+"','"+realityName+"','"+Province+"','"+City+"',"+customerType+",'"+units+"','"+photo+"','"+duty+"','"+attention+"','"+email+"',"+item+")";
string strSQL = "insert into CustomerTable (CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) VALUES ('"+customerName+"','"+password+"','"+realityName+"','"+Province+"','"+City+"',"+customerType+",'"+units+"','"+photo+"','"+duty+"','"+attention+"','"+email+"',"+item+")";
#7
在access里面Password是关键字,不能用来作字段,
#8
好像不是 我也烦着毛病 现在还没改过来呢 什么关键字啊 我都检查了 自动编号也改成数字 可还是有这毛病
#9
有一点不要忽略了,你字段间和数据间的逗号要保证是英文输入法下的。“,”“,”这两个符号在vs 编辑器里差别很小。
#10
string strSQL ="insert into CustomerTable(CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) values( '"+customerName+ " ', '"+password+ " ', '"+realityName+ " ', '"+Province+ " ', '"+City+ " ', '"+customerType+ ",'"+units+ " ','"+photo+ " ', '"+duty+ " ', '"+attention+"')";
' "+City+ " ', "+customerType+ ", ' 还有values('"++"','"++"') values和() 之间不要有空格
"+cust 前面少了个' 楼主要细心检查。向这种字段比较多建议 分开写 比较清晰
string strSQL = "insert into CustomerTable(CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item)";
strSQL+=" values( '"+customerName+ " ', '"+password+ " ', '"+realityName+ " ', '"+Province+ " ', '"+City+ " ', '"+customerType+ ",'"+units+ " ','"+photo+ " ', '"+duty+ " ', '"+attention+"')";
#11
突然发现我也出了这么一个问题,楼主的这个问题用几位高手的说法详细检查了一通,都没问题,可是就是insert不了.出错情况和楼主一样,就把这个帖子顶起来,期待高手再次解决
#12
我是因为数据库中的列名跟系统有冲突了,比如我的时间列设置为了:time,这样,他就报跟你同样的错误,我刚研究出来,希望对你有用!
#13
我想知道,用insert时,有些textbox中的数据为空(在数据库中允许为空),再用OleDb\sqlCommand(实例化一个对象).ExecuteNonQuery()方法时,为什么也出现楼主的错误,也就是说用.ExecuteNonQuery()方法不能部分数据插入数据库吗?
#14
顶(大漠风宝)一般出现中英文字符切换的时候,不论是文字还是标点符号,如果选成中文的,也会出现这种提示,最好重点检查一下这些方面
#15
其实是这样的,你如果在写insert语句是省略的话要看一下你的资料是否与表中字段数目相同,位置对应的。
如果还不行的话就不要省略了把字段也加上INSERT INTO CustomerTable(字段……) VALUES,你的字段CustomerTPKID设置为自动累加的吗?是不是可以为空呢?
如果是累加的话,还有错的话可能这种累加字段不能省略了。
如果还不行的话就不要省略了把字段也加上INSERT INTO CustomerTable(字段……) VALUES,你的字段CustomerTPKID设置为自动累加的吗?是不是可以为空呢?
如果是累加的话,还有错的话可能这种累加字段不能省略了。
#16
可以是SQL语句的问题,好好看看,如标点符号,和引号 要是中文的,打段点看,把SQL拿到数据库中运行一下看哪出错了
#17
LZ解决了吗??
#18
出错原因:
数据库表中的实际列数和sql插入语句中插入的列数不一致造成的。
例如:表A中有三个字段(aaa int,bbb int,ccc int)
而插入写成如下时:insert into A values(111, 222)时程序会报该错误提示。
只需改为:insert into A values(111, 222, 333)即可。
数据库表中的实际列数和sql插入语句中插入的列数不一致造成的。
例如:表A中有三个字段(aaa int,bbb int,ccc int)
而插入写成如下时:insert into A values(111, 222)时程序会报该错误提示。
只需改为:insert into A values(111, 222, 333)即可。
#19
我刚刚也碰到了这个问题,和你说的一模一样,我发现是我将语句中的一个逗号打成了中文的,这些细小的问题很容易出现,你还是好好检查下语句,还有,即使有些字段不设成自动编号或系统自定(比如说时间字段,我将默认值设成了Now()),也可以在写语句时不写而插入一条记录(我刚开始以为这才是查询值得数目与目标字段不对应,但事实上这样反而行)。
这个是我的语句
string sql = string.Format("insert into news_info(分类编号,标题,来源,内容) values({0},'{1}','{2}','{3}')", DropDownList1.SelectedValue, TextBox2.Text.Trim(), TextBox3.Text.Trim(), myEditor.Text.Trim());
这个是我的数据库
编号 自动编号
分类编号 数字
标题 文本
日期 日期/时间
来源 文本
内容 备注
点击数 数字
很明显我的语句李没有点击数这个字段,但成功了
这个是我的语句
string sql = string.Format("insert into news_info(分类编号,标题,来源,内容) values({0},'{1}','{2}','{3}')", DropDownList1.SelectedValue, TextBox2.Text.Trim(), TextBox3.Text.Trim(), myEditor.Text.Trim());
这个是我的数据库
编号 自动编号
分类编号 数字
标题 文本
日期 日期/时间
来源 文本
内容 备注
点击数 数字
很明显我的语句李没有点击数这个字段,但成功了
#20
。。。。
#21
9楼正解
#22
汗,你那符号错误了这是最不该的呀
#23
哎。。。这年头。。。标点符号都不干出错,,,我也是9楼那原因。。
#1
数据库字段:
CustomerTPKID 自动编号
CustomerName 文本
Password 文本
RealityName 文本
Province 文本
City 文本
CustomerType 数字
Units 文本
Photo 文本
Duty 文本
Attention 文本
Email 文本
Item 数字
CustomerTPKID 自动编号
CustomerName 文本
Password 文本
RealityName 文本
Province 文本
City 文本
CustomerType 数字
Units 文本
Photo 文本
Duty 文本
Attention 文本
Email 文本
Item 数字
#2
可能因为自动编号,你老老实实用(CustomerName,....) Values(......)试试
#3
string strSQL = "INSERT INTO CustomerTable VALUE //应该是values吧
#4
InsertCustomer(1,"a","aa","asdf","asdf","asdf",1,"asdf","asdf","asdf","asdf","asdf",1);
我这样调用方法都可以写入到数据库,前面CustomerTPKID 的字段我也给了一个值,就好用,可是我不给值就报错。应该怎么调啊?
我这样调用方法都可以写入到数据库,前面CustomerTPKID 的字段我也给了一个值,就好用,可是我不给值就报错。应该怎么调啊?
#5
我用的是 values 让我该过来了
#6
我这么写说我“INSERT INTO 语句的语法错误。”
string strSQL = "insert into CustomerTable (CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) VALUES ('"+customerName+"','"+password+"','"+realityName+"','"+Province+"','"+City+"',"+customerType+",'"+units+"','"+photo+"','"+duty+"','"+attention+"','"+email+"',"+item+")";
string strSQL = "insert into CustomerTable (CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) VALUES ('"+customerName+"','"+password+"','"+realityName+"','"+Province+"','"+City+"',"+customerType+",'"+units+"','"+photo+"','"+duty+"','"+attention+"','"+email+"',"+item+")";
#7
在access里面Password是关键字,不能用来作字段,
#8
好像不是 我也烦着毛病 现在还没改过来呢 什么关键字啊 我都检查了 自动编号也改成数字 可还是有这毛病
#9
有一点不要忽略了,你字段间和数据间的逗号要保证是英文输入法下的。“,”“,”这两个符号在vs 编辑器里差别很小。
#10
string strSQL ="insert into CustomerTable(CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item) values( '"+customerName+ " ', '"+password+ " ', '"+realityName+ " ', '"+Province+ " ', '"+City+ " ', '"+customerType+ ",'"+units+ " ','"+photo+ " ', '"+duty+ " ', '"+attention+"')";
' "+City+ " ', "+customerType+ ", ' 还有values('"++"','"++"') values和() 之间不要有空格
"+cust 前面少了个' 楼主要细心检查。向这种字段比较多建议 分开写 比较清晰
string strSQL = "insert into CustomerTable(CustomerName,Password,RealityName,Province,City,CustomerType,Units,Photo,Duty,Attention,Email,Item)";
strSQL+=" values( '"+customerName+ " ', '"+password+ " ', '"+realityName+ " ', '"+Province+ " ', '"+City+ " ', '"+customerType+ ",'"+units+ " ','"+photo+ " ', '"+duty+ " ', '"+attention+"')";
#11
突然发现我也出了这么一个问题,楼主的这个问题用几位高手的说法详细检查了一通,都没问题,可是就是insert不了.出错情况和楼主一样,就把这个帖子顶起来,期待高手再次解决
#12
我是因为数据库中的列名跟系统有冲突了,比如我的时间列设置为了:time,这样,他就报跟你同样的错误,我刚研究出来,希望对你有用!
#13
我想知道,用insert时,有些textbox中的数据为空(在数据库中允许为空),再用OleDb\sqlCommand(实例化一个对象).ExecuteNonQuery()方法时,为什么也出现楼主的错误,也就是说用.ExecuteNonQuery()方法不能部分数据插入数据库吗?
#14
顶(大漠风宝)一般出现中英文字符切换的时候,不论是文字还是标点符号,如果选成中文的,也会出现这种提示,最好重点检查一下这些方面
#15
其实是这样的,你如果在写insert语句是省略的话要看一下你的资料是否与表中字段数目相同,位置对应的。
如果还不行的话就不要省略了把字段也加上INSERT INTO CustomerTable(字段……) VALUES,你的字段CustomerTPKID设置为自动累加的吗?是不是可以为空呢?
如果是累加的话,还有错的话可能这种累加字段不能省略了。
如果还不行的话就不要省略了把字段也加上INSERT INTO CustomerTable(字段……) VALUES,你的字段CustomerTPKID设置为自动累加的吗?是不是可以为空呢?
如果是累加的话,还有错的话可能这种累加字段不能省略了。
#16
可以是SQL语句的问题,好好看看,如标点符号,和引号 要是中文的,打段点看,把SQL拿到数据库中运行一下看哪出错了
#17
LZ解决了吗??
#18
出错原因:
数据库表中的实际列数和sql插入语句中插入的列数不一致造成的。
例如:表A中有三个字段(aaa int,bbb int,ccc int)
而插入写成如下时:insert into A values(111, 222)时程序会报该错误提示。
只需改为:insert into A values(111, 222, 333)即可。
数据库表中的实际列数和sql插入语句中插入的列数不一致造成的。
例如:表A中有三个字段(aaa int,bbb int,ccc int)
而插入写成如下时:insert into A values(111, 222)时程序会报该错误提示。
只需改为:insert into A values(111, 222, 333)即可。
#19
我刚刚也碰到了这个问题,和你说的一模一样,我发现是我将语句中的一个逗号打成了中文的,这些细小的问题很容易出现,你还是好好检查下语句,还有,即使有些字段不设成自动编号或系统自定(比如说时间字段,我将默认值设成了Now()),也可以在写语句时不写而插入一条记录(我刚开始以为这才是查询值得数目与目标字段不对应,但事实上这样反而行)。
这个是我的语句
string sql = string.Format("insert into news_info(分类编号,标题,来源,内容) values({0},'{1}','{2}','{3}')", DropDownList1.SelectedValue, TextBox2.Text.Trim(), TextBox3.Text.Trim(), myEditor.Text.Trim());
这个是我的数据库
编号 自动编号
分类编号 数字
标题 文本
日期 日期/时间
来源 文本
内容 备注
点击数 数字
很明显我的语句李没有点击数这个字段,但成功了
这个是我的语句
string sql = string.Format("insert into news_info(分类编号,标题,来源,内容) values({0},'{1}','{2}','{3}')", DropDownList1.SelectedValue, TextBox2.Text.Trim(), TextBox3.Text.Trim(), myEditor.Text.Trim());
这个是我的数据库
编号 自动编号
分类编号 数字
标题 文本
日期 日期/时间
来源 文本
内容 备注
点击数 数字
很明显我的语句李没有点击数这个字段,但成功了
#20
。。。。
#21
9楼正解
#22
汗,你那符号错误了这是最不该的呀
#23
哎。。。这年头。。。标点符号都不干出错,,,我也是9楼那原因。。