首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

高分请教个简单的有关问题关于DataReader(多谢 各位耐心指点!)

2011-12-23 
高分请教个简单的问题关于DataReader(谢谢 各位耐心指点!)本StudyD.aspx的cs代码用来检索数据库中是否存在

高分请教个简单的问题关于DataReader(谢谢 各位耐心指点!)
本StudyD.aspx的cs代码   用来检索数据库中是否存在   用户提交的Studyno和Studyname   。
String   mysql   =   "SELECT   [id]   FROM   [STUDY_INFOS]   WHERE   [ID]=   ' "   +   Studyno.Text.ToString   ()   +   " '   OR   [NAME]= ' "   +   Studyname.Text   .ToString   ()   +   " ' ";
                        cn.Open();
                        SqlCommand   cmm   =   new   SqlCommand(mysql,   cn);
                        SqlDataReader   dr   =   cmm.ExecuteReader();
                        if   (dr.Read())
                        {
                                id   =   dr[ "id "].ToString();
                                Response.Redirect( "StudyDetail.aspx?id= ' "+   id   + " '   ");
                        }
如果存在 就重新读出id   =dr[ "id "].ToString();  
并通过url   传递   到StudyDetail.aspx   中
进行接收id    
      String   wheres   =   Request.QueryString[ "id "];
                        String   mysql   =   "SELECT   *   FROM   [STUDY_INFOS]   WHERE   [ID]= ' "+wheres+ " '   ";
                        cn.Open();
                        SqlCommand   cmm   =   new   SqlCommand(mysql,   cn);     //此处有值(鼠标   放置   mysql   上 发现出现的是: "SELECT   *   FROM   [STUDY_INFOS]   WHERE   [ID]= "040613410 " ")
//个人感觉  "040613410 "错误    应该是  '040613410 '
//     但是怎么能改正呢?
//     是这的错误吗?if   (dr.Read())
//                         {
//                                 id   =   dr[ "id "].ToString(); //怀疑错在这但不会改
//                               Response.Redirect( "StudyDetail.aspx?id= ' "+   id   + " '   ");
//                     }
 
                        SqlDataReader   dr   =   cmm.ExecuteReader();
                        if   (dr.Read())
========================
错误指向:SqlDataReader   dr   =   cmm.ExecuteReader();     行
错误提示 '040613410 '   附近有语法错误。(这里我传递的id=040613410)
================
当我调试时发现:cmm.ExecuteReader();   有值  
            但是:         dr=null


-----------------------------------


[解决办法]
Response.Redirect( "StudyDetail.aspx?id= ' "+ id + " ' ");
应该写成
Response.Redirect( "StudyDetail.aspx?id= "+ id + " ");
否则在获取参数的时候, 就成了下面的样子
String wheres = Request.QueryString[ "id "];
wheres = " '040613410 ' "
mysql = "SELECT * FROM [STUDY_INFOS] WHERE [ID]= ' '040613410 ' ' ";
就出现你上面的错误。

[解决办法]
Response.Redirect( "StudyDetail.aspx?id= ' "+ id + " ' ");
最后得出的地址是
StudyDetail.aspx?id= '040613410 '
所有你查询语句就变成SELECT * FROM [STUDY_INFOS] WHERE [ID]= "040613410 "
这里的 "040613410 "不是双引号,而是 ' '040613410 ' '
[解决办法]
错误原因:

Sql出错.

ID 如果是字符串型:
String mysql = string.Foramt( "SELECT * FROM [STUDY_INFOS] WHERE [ID]= '{0} ' ",wheres);

ID 如果是数字型:

String mysql = string.Foramt( "SELECT * FROM [STUDY_INFOS] WHERE [ID]={0} ",wheres);
[解决办法]
跳转的地方不对,Response.Redirect( "StudyDetail.aspx?id= ' "+ id + " ' ");
这里应该改成Response.Redirect( "StudyDetail.aspx?id= "+ id);
不然你接收到的ID会变成 '040613410 ',会多出引号

热点排行