System.Data.OleDb.OleDbException: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成

hsbhljl 2009-10-25 07:07:53
是插入语句
直接在access里,语句没有问题,成功执行,但是放到程序里就不行!!有人知道为什么吗?
应该不是使用参数的问题吧?
而且也核对过了,所有字段都足够长!!!
...全文
343 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsbhljl 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lzsh0622 的回复:]
分步测试,先少加些字段,找出是哪个字段引起的错误.
[/Quote]
谢谢你的大力支持!!
近一半的回复都是你的,呵呵!!
lzsh0622 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hsbhljl 的回复:]
写成参数怎么写啊?
OleDbParametar time=new OleDbParametar("@time","#"+DateTime.Now.ToString()+"#");
这样写吗?
[/Quote]


OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Persist Security Info=False");
conn.Open();
string cmdtxt = "Update users set rq=@rq";
OleDbCommand cmd = new OleDbCommand(cmdtxt, conn);
cmd.Parameters.Add("@rq", OleDbType.DBDate).Value = DateTime.Now;
cmd.ExecuteNonQuery();
xue5521 2009-10-26
  • 打赏
  • 举报
回复
没链接打开数据库? 字段不匹配?
hsbhljl 2009-10-26
  • 打赏
  • 举报
回复
写成参数怎么写啊?
OleDbParametar time=new OleDbParametar("@time","#"+DateTime.Now.ToString()+"#");
这样写吗?
lzsh0622 2009-10-26
  • 打赏
  • 举报
回复
日期 '2009-10-25 00:00:00'  -->  #2009-10-25 00:00:00#
hsbhljl 2009-10-26
  • 打赏
  • 举报
回复
这是测试的插入语句,直接在access里执行是没问题的。
insert into cl_article(channelid,classid,title,fonttype,fontcolor,ontop,hot,editor,[content],updatetime,status,deleted,hits,islink,htmlfileurl,picurl,specialid,keyword,infomoney,backpoint,backpointrate,backmoney,backmoneyrate,[receive])values(1,1,'测试',0,'',0,0,'1','测试','2009-10-25 00:00:00',1,0,0,0,'','',0, '技术',0,0,0,0,0,0)
lzsh0622 2009-10-26
  • 打赏
  • 举报
回复
分步测试,先少加些字段,找出是哪个字段引起的错误.
lzsh0622 2009-10-26
  • 打赏
  • 举报
回复
引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数
hsbhljl 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lzsh0622 的回复:]
日期 '2009-10-25 00:00:00'  -->   #2009-10-25 00:00:00#
[/Quote]
还是不行额。。。
insert into cl_article(channelid,classid,title,fonttype,fontcolor,ontop,hot,editor,[content],updatetime,status,deleted,hits,islink,htmlfileurl,picurl,specialid,keyword,infomoney,backpoint,backpointrate,backmoney,backmoneyrate,[receive])values(1,1,'测试',0,'',0,0,'1','测试','2009-10-25 00:00:00',1,0,0,0,'','',0, '技术',0,0,0,0,0,0)
数据库连接没问题的,就是提示:
System.Data.OleDb.OleDbException: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
lzsh0622 2009-10-25
  • 打赏
  • 举报
回复
把SQL代码贴出来
LutzMark 2009-10-25
  • 打赏
  • 举报
回复
还有注意可空字段类型的参数问题
wuyq11 2009-10-25
  • 打赏
  • 举报
回复
数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。
还有连接字符串是否正确
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace 保存GRID数据示例 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { //提示是否修改 #region//--------修改数据就将数据保存并显示 if (MessageBox.Show("是否保存数据?", "系统消息", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK) { #region ..........这里是保存数据代码 //结束编辑 dataGridView1.EndEdit(); //重新用表格数据填充数据容器 OleDbDataAdapter Ada = new OleDbDataAdapter(); DataTable table = (DataTable)dataGridView1.DataSource; //重新启动连接 String ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "/驱动.mdb"; //用Buider方法更新数据 using (OleDbConnection connection = new OleDbConnection(ConnectionString)) { Ada.SelectCommand = new OleDbCommand("SELECT * FROM 表", connection); OleDbCommandBuilder builder = new OleDbCommandBuilder(Ada); Ada.UpdateCommand = builder.GetUpdateCommand(); try { //更新数据表数据时 Ada.Update(table); table.AcceptChanges(); MessageBox.Show("操作已成功!数据将全部被保存......", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); } catch (System.Data.OleDb.OleDbException ex) { throw new Exception(ex.Message); } } #endregion } #endregion #region //--------不修改就初始化显示以前数据 else { MessageBox.Show("用户取消操作,数据将恢复到初始状态......"); OleDbConnection A = new OleDbConnection(); A.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "/驱动.mdb"; try { A.Open(); DataSet B = new DataSet(); string sqlStr = "Select * from 表"; OleDbDataAdapter C = new OleDbDataAdapter(sqlStr, A); C.Fill(B); dataGridView1.DataSource = B.Tables[0]; } catch (System.Data.OleDb.OleDbException ex) { throw new Exception(ex.Message); } finally { A.Close(); } } #endregion } private void button1_Click(object sender, EventArgs e) { OleDbConnection A = new OleDbConnection(); A.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "/驱动.mdb"; try { A.Open(); DataSet B = new DataSet(); string sqlStr = "Select * from 表"; OleDbDataAdapter C = new OleDbDataAdapter(sqlStr, A); C.Fill(B); dataGridView1.DataSource = B.Tables[0]; } catch (System.Data.OleDb.OleDbException ex) { throw new Exception(ex.Message); } finally { A.Close(); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { } } }

110,529

社区成员

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

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

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