OraHelper DB=new OraHelper();
System.Data.OracleClient.OracleConnection Con=(System.Data.OracleClient.OracleConnection)DB.OpenDb();
//Con.Open();

System.Data.OracleClient.OracleCommand Cmd=new OracleCommand(Sql,Con);
System.Data.OracleClient.OracleDataAdapter DA=new OracleDataAdapter(Cmd);
DA.InsertCommand=new OracleCommand(InsertSql,Con);
System.Data.OracleClient.OracleParameter Temp=new OracleParameter("TempContent",OracleType.Clob);
Temp.Value=Content;
DA.InsertCommand.Parameters.Add(Temp);
DA.InsertCommand.ExecuteNonQuery();
Con.Close();下面是我调用的那个Sql:
Sql="insert into "+TableName+"(ID,BBSID,Subject,UserID,UpTime,AnswerCount,ReadCount,LastUserID,LastUserTime,ContentType,ISShow,Pic,Top,Content) values("+ID+","+BBSID+",'"+Subject+"','"+LoginName+"','"+UpTime+"',0,0,'"+LastUser+"','"+LastUserTime+"',0,0,"+Pic+",0,:TempContent)";
//DB.Execute(Sql);
//插入正文
this.InsertContent(Sql,"select ID from "+TableName,Content); 老是抱:ORA-01861: 文字与格式字符串不匹配

解决方案 »

  1.   

    OraHelper DB=new OraHelper();
    System.Data.OracleClient.OracleConnection Con=(System.Data.OracleClient.OracleConnection)DB.OpenDb(); System.Data.OracleClient.OracleCommand Cmd=Con.CreateCommand();
    Cmd.CommandText=InsertSql;
    System.Data.OracleClient.OracleParameter Temp=new OracleParameter("TempContent",OracleType.Clob);
    Temp.Value=Content;
    Cmd.Parameters.Add(Temp);
    Cmd.ExecuteNonQuery();
    Con.Close();
      

  2.   

    我以前也遇到过那种问题,没解决,后来是直接插入除clob(blob)类型以外的字段的数据,然后再去update(更新)刚才那条插入的新纪录,就是单独更新clob(blob)字段,后来成功了,希望对你有点帮助
      

  3.   

    我现在也是按你说的,先插入一个empty_clob()
    然后用update 
    OraHelper DB=new OraHelper();
    System.Data.OracleClient.OracleConnection Con=(System.Data.OracleClient.OracleConnection)DB.OpenDb(); System.Data.OracleClient.OracleCommand Cmd=Con.CreateCommand();
    Cmd.CommandText=InsertSql;
    System.Data.OracleClient.OracleParameter Temp=new OracleParameter("TempContent",OracleType.Clob);
    Temp.Value=Content;
    Cmd.Parameters.Add(Temp);
    Cmd.ExecuteNonQuery();
    Con.Close();
    用上面的语句执行,程序没包错,但是值还是没有插入进去
      

  4.   

    把sql语句放到sqlserver直接执行试试看啊
      

  5.   

    public void InsertContent(string InsertSql,string Content)
    {
    try
    {
    OraHelper DB=new OraHelper();
    System.Data.OracleClient.OracleConnection Con=(System.Data.OracleClient.OracleConnection)DB.OpenDb();
    System.Data.OracleClient.OracleCommand Cmd=new OracleCommand(InsertSql,Con);
    System.Data.OracleClient.OracleParameter Temp=new OracleParameter("TempContent",OracleType.Clob);
    Temp.Direction=ParameterDirection.Input;
    Temp.Value=Content;
    Cmd.Parameters.Add(Temp);
    Cmd.ExecuteNonQuery();
    }
    catch(Exception E)
    {
    throw new Exception("插入正文出错:"+E.Message);
    }
    finally
    {
    Con.Close();
    }
    }上面代码测试通过,调用方式为:
    Content为clob类型:
    InsertContent("insert into tableClob(id,Content) values(1,:TempContent)",BigContent)