用c#开发程序,后台数据库是sybase,用odbc连接,现在:
OdbcCommand command = null;
OdbcConnection odbccon = new OdbcConnection(odbcconStr);
odbccon.Open();
command = new OdbcCommand(sSql, odbccon);
sSql = "insert into STORM (YMD,NANJS,LIUH) values (?,?,?)";
command.Parameters.Add(new OdbcParameter("@YMD", OdbcType.DateTime));
command.Parameters.Add(new OdbcParameter("@NANJS", OdbcType.Numeric));
command.Parameters.Add(new OdbcParameter("@LIUH", OdbcType.Numeric));
command.Parameters[0].Value = Convert.ToDateTime(ybdate);//时间
command.Parameters[1].Value = 1.5;
command.Parameters[1].Value = 2.8;
command.ExecuteNonQuery();//执行到这儿报错,说不能从char转换到Numeric型,可是我给参数负的值是数值型的呀。

解决方案 »

  1.   

    command.Parameters[1].Value = Convert.toDecimal(1.5);
    command.Parameters[1].Value = Convert.toDecimal(2.8);
      

  2.   

    command.Parameters[0].Value = Convert.ToDateTime(ybdate);//时间
    这个没有报错
      

  3.   

    连接sybase11.5,不配置dsn,直接用Driver={SYBASE SYSTEM 11};DB=jsdb;NA=192.168.0.228,5000;NLN=Winsock;Uid=SUser;PwdSPass;
    这个连接字符串行吗?我这儿没有sybase11.5,只有12.5,试不起来
      

  4.   

    上面错了,是Driver={SYBASE SYSTEM 11};DB=jsdb;NA=192.168.0.228,5000;NLN=Winsock;Uid=SUser;Pwd=SPass;
    sybase12.5用Driver={SYBASE ASE ODBC Driver};DB=jsdb;NA=192.168.0.228,5000;NLN=Winsock;Uid=SUser;Pwd=SPass;
    可以
      

  5.   

    注意数据库表STORM的字段类型,显然是不一致了
      

  6.   

    用command.Parameters[1].Value = Convert.toDecimal(1.5);
    也不行