string create = @"   create table AMArchives
  (
  IDVolume NUMBER not null,
  IDArchive NUMBER,
   ArchiveID nvarchar2(200),
   DutyMan nvarchar2(200),
  Title nvarchar2(200),
  GotTime date, 
)
  tablespace test";
string insert = string.Format("insert into AMArchives
(IDVolume,IDArchive,ArchiveID,DutyMan,Title,GotTime,Pages,Re,JuanXuHao,TitleFormat,GotTimeSpecial) 
values ({0},{1},'{2}','{3}','{4}','{5}')", 
IDVolume, IDArchive, ArchiveID, DutyMan, Title, Convert.ToDateTime(GotTime));int IDVolume;
decimal IDArchive;
string ArchiveID;
string DutyMan;
string Title;
string  GotTime;运行时显示文字与格式字符串不匹配,现在基本确定是date的原因,高手们告诉下我应该怎么写这段代码啊

解决方案 »

  1.   

    用字符串相加的方式string insert = @"insert into AMArchives
    (IDVolume,IDArchive,ArchiveID,DutyMan,Title,GotTime,Pages,Re,JuanXuHao,TitleFormat,GotTimeSpecial) 
    values ('"+IDVolume+"','"+IDArchive+"','"+ArchiveID+"','"+DutyMan+"','"+Title+"',"+Convert.ToDateTime(GotTime));
    或者使用参数的方式也可以
      

  2.   

    string sqlStr="insert into AMArchives(IDVolume,IDArchive,ArchiveID,DutyMan,Title,GotTime,Pages,Re,JuanXuHao,TitleFormat,GotTimeSpecial) values("+IDVolume+", "+IDArchive+",'"+ ArchiveID +"','"+ DutyMan +"','"+ Title +"',
    "+Convert.ToDateTime(GotTime)+")";
      

  3.   

    GotTime输入的格式符合日期格式不
      

  4.   

    不是字符串相加。
    "+变量+" :  如果变量不是string, 这样写到sql语句中
    '"+变量+"' :如果变量是string, 这样写到sql语句中
      

  5.   

    以前遇到过这个问题 具体代码忘记了  解决思路大体如下:
    在你的Insert语句中插入date那一列的时候,调用一个库中的类型转换函数 好像是Convert(类型,值),完后你在code中给这个数据赋值的时候直接给它一个string类型的
      

  6.   

    不用字符串相加,使用添加参数的方式也可以,还可以防止SQL注入攻击。。
      

  7.   

    也可以这样写
    OracleCommand cmd=new OracleCommand();cmd.CommandType = CommandType.Text
    cmd.Connection = conn;
    cmd.CommandText = sqlstr;string sqlstr="insert into AMArchives(IDVolume,IDArchive,ArchiveID,DutyMan,Title,GotTime,Pages,Re,JuanXuHao,TitleFormat,GotTimeSpecial) values(:IDVolume,:IDArchive,:ArchiveID ,:DutyMan ,:Title ,:GotTime)";cmd.Praramerters.Add(":IDVolume",OracleType.Number);
    cmd.Praramerters.Add(":IDArchive",OracleType.Number);
    cmd.Praramerters.Add(":ArchiveID",OracleType.nvarchar(100));
    cmd.Praramerters.Add(":DutyMan",OracleType.nvarchar(100));
    cmd.Praramerters.Add(":GotTime",OracleType.Date);cmd.Praramerters[0].Value=IDVolume;
    cmd.Praramerters[1].Value=IDArchive
    cmd.Praramerters[2].Value=ArchiveID;
    cmd.Praramerters[3].Value=DutyMan;
    cmd.Praramerters[4].Value=GotTime;cmd.ExcuteNoneQuery();
      

  8.   

    是从sqlserver中的datetime直接转过来的,格式应该没问题吧
      

  9.   

    values ({0},{1},'{2}','{3}','{4}',To_Date('{5}','yyyy-MM-dd'))", 
      

  10.   

    解决了解决了
    To_Date('{5}','yyyy-mm-dd hh24:mi:ss')
    谢谢楼上各位了