当前位置: 首页 > 编程语言 > C#

如何从SqlDataReader返回单个值?分享

时间:2023-04-10 11:17:14 C#

SqlDataReader如何返回单个值?我忘记在单层应用程序中返回值。publicintStudentid(){try{SqlConnectioncon=newSqlConnection(connectionStr);SqlCommandcmd=newSqlCommand("SELECTs_idFROMstudentwherename=+('"+Request.QueryString.ToString()+"')",con);con.Open();SqlDataReaderdr=null;con.Open();dr=cmd.ExecuteReader();if(dr.Read()){//想听听我是如何返回值的}con.Close();}catch(Exceptionex){抛出ex;这是您的方法的一个版本,可以满足您的要求。publicintGetStudentId(){varsql=string.Format("SELECTs_idFROMstudentwherename='{0}'",Request.QueryString);使用(varcon=newSqlConnection(connectionStr))使用(varcmd=newSqlCommand(sql,con)){con.Open();vardr=cmd.ExecuteReader();返回dr.Read()?返回getInt32(0):-1;Nothingbutrethrow没有必要使用try/catch来做任何有异常的事情(实际上你通过使用throwex丢失了原始堆栈跟踪;而不是只抛出;但是使用语句throw;C#using语句也可以用更少的代码表现你负责清理资源。重要将查询字符串直接传递给SQL意味着任何人都可以在数据库中执行随机SQL,可能会删除所有内容(或更糟)。阅读有关SQL注入的信息。您应该使用块来确保正确关闭连接、命令和阅读器。然后您可以从if语句返回值,并且在关闭对象之前不必将它存储在变量中。您只需要打开一次连接。您应该使用参数化查询,而不是将值连接到查询中。publicintStudentid(){try{using(SqlConnectioncon=newSqlConnection(connectionStr)){using(SqlCommandcmd=newSqlCommand("SELECTs_idFROMstudentwherename=@Name",con)){cmd.Parameters.Add("@Name",DbType.VarChar,50).Value=Request.QueryString.ToString();con.Open();使用(SqlDataReaderdr=cmd.ExecuteReader()){if(dr.Read()){returndr.GetInt32(0);}else{返回-1;//一些值来指示丢失的记录//或抛出异常}}}}}catch(Exceptionex){throw;//就像这样,重新抛出堆栈跟踪完好无损}}试试这个:ints_id=(int)dr["s_id"];国际学生身份=0;if(rdr.Read()){studId=rdr.GetInt32(rdr.GetOrdinal("s_id"));返回单个值的最简单方法是调用ExecuteScalar。您还应该修复SQL注入错误。你的意思是对整个查询字符串数组进行编码,还是只挑选一个值?publicintStudentId(){stringsql="SELECTs_idFROMstudentWHEREname=@name";使用(varcon=newSqlConnection(connectionStr)){使用(varcmd=newSqlCommand(sql,con)){cmd.Parameters.Add("@name",DbType.VarChar,256).Value=Request.QueryString[“姓名”];con.Open();返回(int)cmd.ExecuteScalar();}}}if(dr.Read()){//想听听我是如何返回值的intvalue=dr.GetInt32("s_id");}像这样?以上就是C#学习教程:SqlDataReader如何返回单个值?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicintStudentid(){intstudentId=-1;SqlConnectioncon=null;尝试{con=newSqlConnection(connectionStr);SqlCommandcmd=newSqlCommand("SELECTs_idFROMstudentwherename=+('"+Request.QueryString.ToString()+"')",con);SqlDataReaderdr=null;con.Open();dr=cmd.ExecuteReader();如果(dr.Read()){studentId=dr.GetInt32(0);}博士关闭();}catch(Exceptionex){抛出ex;}finally{if(con!=null)con.Cl罗斯();con=空;}返回学生身份;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: