URL参数栏:Message_operate.aspx?Message_ID=564f9a92-bc57-46a3-ab5c-be2180ec56ed代码如下:
             Guid MessageID =Guid.Parse( Request.QueryString["Message_ID"].ToString());            string str_sql = "select * from Web_MessageBox where Message_ID=" + MessageID;            conn = new OleDbConnection(str_connection);
            conn.Open();            cmd = new OleDbCommand(str_sql, conn);
            datar = cmd.ExecuteReader();            if (datar.Read())
            {
                
               
                lb_date.Text = datar["Message_CreateTime"].ToString();
                lb_sendername.Text = datar["Message_SenderName"].ToString();
                lb_email.Text = datar["Message_Email"].ToString();
                lb_tel.Text = datar["Message_Tel"].ToString();
                lb_title.Text = datar["Message_Title"].ToString();
                div_MessageContent.InnerHtml = datar["Message_Content"].ToString();
              }
            conn.Close();报错页:麻烦各位大师给分析分析是什么原因?
我用INT和时间戳作ID,都是没有问题的,换成GUID就出问题了,数据库ID类型也换成了uniqueidentifier

解决方案 »

  1.   

    你把这句sql拿到数据库中执行,看看结果如何
      

  2.   


    请帮我修改一下,谢谢.看不出你是用什么数据库系统。把你的数据库系统“管理客户端”中查看 Message_ID 字段的定义,截图贴出来。你想啊,哪一个数据库系统 13384332fc23-234234-a23这能直接写到等号后边吗?
      

  3.   

    自己把str_sql打印出来看,还说真不是
      

  4.   

    检查这句:
    string str_sql = "select * from Web_MessageBox where Message_ID=" + MessageID;MessageID变量是字符串,需要前后有带单引号。
    另外你的这个参数是从地址栏传的,如果用户稍改一下这个参数值,在其加一个单引号的话,也会有问题,也得处理。
      

  5.   


    请帮我修改一下,谢谢.看不出你是用什么数据库系统。把你的数据库系统“管理客户端”中查看 Message_ID 字段的定义,截图贴出来。你想啊,哪一个数据库系统 13384332fc23-234234-a23这能直接写到等号后边吗?我用的是SQL SERVER 2008
    已经按照你的方法解决,以前一直用的INT,所以没有当作字符串处理. 
    现在改成以下后运行OK了,再次感谢你的提醒.
    string str_sql = "select * from Web_MessageBox where Message_ID=' " + MessageID+" ' ";
      

  6.   

    URL参数栏:Message_operate.aspx?Message_ID=‘564f9a92-bc57-46a3-ab5c-be2180ec56ed
    带有单引号的,会出错,sql注入。
    最好是采用参数化的形式。
    简单的处理,就是MessageID.Replace("'","''"),将一个单引号替换成两个单引号
      

  7.   

    最好这样 select * from Web_MessageBox where Message_ID=@Message_ID然后在cmd里面添加sql参数  上面会被sql注入
      

  8.   

    string str_sql = "select * from Web_MessageBox where Message_ID=" + MessageID;
    这句话明显没有单引号啊。
    人家guid也是一个字符串。