ORA-01008: 并非所有变量都已关联(急……)

ljzstar 2006-03-06 06:18:36
不知道错在哪里?请高手帮帮忙!谢了!
数据库表结构:
create table TblRPTFILE
(RPTFILENO number not null,
RPTSHOWNAME varchar2(100) not null,
RPTFILENAME varchar2(50) not null,
RPTFILEBEGINYEAR date not null,
RPTFILEENDYEAR date not null,
constraint TblRPTFILE_PK primary key (rptfileno));

代码:
string sqlStr = "insert into tblRPTFILE values(RPTFILESeq.nextval,:RPTShowName,:RPTFileName,:StartDate,:EndDate)";
OracleCommand cmd = DB.GetCommand(sqlStr);
cmd.Parameters.Add(":RPTShowName",OracleType.VarChar,100).Value=this.reportName;
cmd.Parameters.Add(":RPTFileName",OracleType.VarChar,50).Value=this.filePath;
cmd.Parameters.Add(":StartDate",OracleType.DateTime).Value=OracleDateTime.Parse(this.startDate.ToString());
cmd.Parameters.Add(":EndDate",OracleType.DateTime).Value=OracleDateTime.Parse(this.endDate.ToString());
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery(); //到这就出错了
cmd.Connection.Close();
}
...全文
1064 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljzstar 2006-03-06
  • 打赏
  • 举报
回复
这个我也看过了,我现在用的是OracleClient。不过还是不知道怎么解决,能不能说个解决的办法啊?
vivianfdlpw 2006-03-06
  • 打赏
  • 举报
回复
http://jacklaw.cnblogs.com/archive/2005/01/27/98390.html

昨天晚上往Oracle数据库里面保存一幅图片,算是很稀松平常的大字段操作,搞了半天就是没存进去,提示是“System.Data.OleDb.OleDbException: ORA-01008: 并非所有变量都已关联”。本以为是OleDbParameter的写法不对,到CSDN上一查,问题出在驱动程序上:把“provider=MSDAORA.1;”改为“provider='OraOleDb.Oracle';”,问题解决。
  总结一下在 .Net 中读写Oracle数据库常用两种方式:OracleClient和OleDb,其中OleDb的方式根据驱动程序的不同又有两种。

  1. OracleClient方式,是微软专门针对Oracle数据库开发的,仅在 .NET Framework 1.1 版中受支持。据说速度快、性能好,是推荐使用的方式。但根据我的经验,当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。
  引用类库:System.Data.OracleClient.dll。
  命名空间:System.Data.OracleClient。
  常用类:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等。
  典型连接字符串:“data source=oratest;user id=scott;password=tiger”(注意:可不指定 provider 驱动)。

  2. OleDb方式,微软和Oracle公司各自提供了OleDb的驱动程序,使用方法的差别很少。不管Oracle服务器端用何字符集,读写中文均无乱码问题。
  相同之处
  命名空间:System.Data.OleDb。
  常用类:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。
  不同之处
  引用类库:微软的只需要System.Data.dll;若用Oracle的驱动,虽然也只要引入System.Data.dll,但前提是首先安装Oracle针对.Net的数据访问组件。
  连接字符串:与OracleClient方式相比,要添加一个provider,微软为“provider=MSDAORA.1;”,Oracle为“provider='OraOleDb.Oracle';”。

vivianfdlpw 2006-03-06
  • 打赏
  • 举报
回复
ORA-01008 not all variables bound

Cause: A SQL statement containing substitution variables was executed without all variables bound. All substitution variables must have a substituted value before the SQL statement is executed.
ljzstar 2006-03-06
  • 打赏
  • 举报
回复
快点啊。真的很急啊。在线等着呢,高手帮帮忙。顺便问一下,怎么给人加分和结贴啊?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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