我在调用存储过程的过程中需要把时间作为参数传递,就是在获得一个时间后,把它转换成string型后为:2006-12-9 20:10:00可是每次提示我"-"附近出现错误,我试了几次,最后感觉c#中对"-"的好象是作为什么特殊字符处理的,请问高手如何解决??谢谢!!!1

解决方案 »

  1.   

    如果只是传递参数应该不会报错吧,作为个string传进去?
      

  2.   

    是在运行时 sda.fill(ds)[ sda是sqldataadepter ds 是dataset]提示错误 说第一行"-"附近有错误,我是用一个string变量接收的时间作为参数传递的.当我把存储过程中时间参数去掉后,不传时间参数就没事了,所以我判断是时间参数出了问题.
      

  3.   

    你要把存储过程里面的时间类型改成DateTime,
    如不然--他是认为非法,

    把你的存储过代贴上来,以C·#代码
      

  4.   

    把存储过程里面的时间类型改成DateTime
    数据类型不匹配的话,一般会提示出错。
      

  5.   

    存储过程代码:
    CREATE proc sp_AddOder(@RoomId int,@CNname varchar(50),@CPhone varchar(50),@BeginTime  dateTime,@endtime dateTime, @Res varchar(50))  
    as
      insert Oder values(@RoomId,@CNname,@CPhone,@BeginTime,@endtime,@Res)
    GOc#代码为:
    表示层:
      string st = "sp_AddOder " + roomid + "," + name + "," + phone + "," + begintime    + "," + endtime + "," + re;
      ser.updateSql(st);
    数据层:
     public void updateSql(string st)
            {
               sda = new SqlDataAdapter(st, this.getConnection());
                sda.Fill(ds);            
            }这里的begintime 和 endtime是通过datetimepicker获得的
    string begintime = this.dateTimePicker1.Value.ToString();
    string endtime = this.dateTimePicker2.Value.ToString();
      

  6.   

    你把begintime 和endtime先转正datetime类型的然后再作为参数传给存储过程试试。如果不行,你把存储过程里面的参数类型也改成string试试。
      

  7.   

    这段代码简直是胡闹,谁告诉你存储过程可以像
     string st = "sp_AddOder " + roomid + "," + name + "," + phone + "," + begintime    + "," + endtime + "," + re;
    这样调用的?
      

  8.   

    int roomid;
    string name, phone, res;
    DateTime begintime, endtime;
    sqlCmd = this.getConnection().CreateCommand();
    sqlCmd.CommandType = CommandType.StoredProcedure;
    sqlCmd.CommandText = "[sp_AddOder]";
    System.Data.SqlClient.SqlParameter sqlParameter = new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", System.Data.DataRowVersion.Current, null);
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@RoomId", System.Data.SqlDbType.Int, 4);
    sqlParameter.Value = roomid;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@CNname", System.Data.SqlDbType.VarChar, 50);
    sqlParameter.Value = name;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@CPhone", System.Data.SqlDbType.VarChar, 50);
    sqlParameter.Value = phone;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@BeginTime", System.Data.SqlDbType.DateTime, 8);
    sqlParameter.Value = begintime;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@endtime", System.Data.SqlDbType.DateTime, 8);
    sqlParameter.Value = endtime;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlParameter = new System.Data.SqlClient.SqlParameter("@Res", System.Data.SqlDbType.VarChar, 50);
    sqlParameter.Value = res;
    sqlCmd.Parameters.Add(sqlParameter);
    sqlCmd.ExecuteNonQuery();
      

  9.   

    jointtan(), 高手。
    麻烦给我解决今天的richtextbox的帖子好吗?llqqff1()的。我对richtextbox其实还很模糊。
      

  10.   

    同意jointan,存储过程调用是不能这样干的.自已上网找找
    SqlDataCommang cm = cn.CreateCommand();
    cm.CommandType = CommandaType.Stor……
    这个要设成是存储过程类型。自已再看看
      

  11.   

    不过还是要感谢jointan() ,chinagoodyang(2008秋天烈日)我建议你也好好找找.你没用过不等于就不能用,不要随便批评别人.我用了不是一次了,只是时间作为参数不行,因为它中间有"-"这个东西.
    如果谁知道怎么处理麻烦尽快告诉我.谢谢.
      

  12.   

    lz你加了引号没有啊?
    试下:string st = "sp_AddOder " + roomid + ",'" + name + "'," + phone + ",'" + begintime    + "','" + endtime + "','" + re+"'";
      

  13.   

    phone也要加,只要是varchar都得加引号.string st = "sp_AddOder " + roomid + ",'" + name + "','" + phone + "','" + begintime    + "','" + endtime + "','" + re+"'";