来自C#的SQL查询双val=0;字符串服务器=“123.444.22.sss”;stringdbase="xyz";stringuserid="cnsk";字符串密码=“xxxxxx”;stringconnection="DataSource="+server+";InitialCatalog="+dbase+";UserID="+userid+";Password="+password;conn=newSqlConnection(连接);尝试{conn.Open();}catch(Exception){stringe="数据库错误联系管理员";MessageBox.Show(e,"错误!");}尝试{SqlDataReadermyReader=null;SqlCommandmyCommand=newSqlCommand("select*fromtablewhereNAME"+"=nameandLAST_NAME=last_name",conn);myReader=myCommand.ExecuteReader();while(myReader.Read()){//dosomething}}catch(Exceptione){Console.WriteLine(e.ToString());}返回(0);我的查询有问题。当我给出普通查询“select*fromtable”时——这给了我完美的结果。但是当我尝试给出条件时,它给了我错误。有什么建议可以解决这个问题吗?谢谢。尝试在where子句中的值周围添加引号,如下所示:select*fromtablewhereNAME='name'andLAST_NAME='last_name'在使用变量的情况下,您需要添加引号,然后将变量的值连接到细绳。或者您可以像这样使用String.Format:varsql=String.Format("select*fromtablewhere[NAME]='{0}'andLAST_NAME='{1}'",name,last_name);SqlCommandmyCommand=newSqlCommand(sql);使用参数化查询等并停止使用一般异常。像这样,其中somName和SomeLastName是你查询的值。Stringsql="Select*FromSomeTableWhere[Name]=@Nameand[Last_Name]=@LastName";尝试使用(SqlConnectionconn=newSqlConnection(连接)){conn.Open();using(SqlCommandcommand=newSqlCommand(sql,conn)){command.Parameters.Add(newSqlParameter("Name",DbType.String,someName));command.Parameters.Add(newSqlParameter("LastName",DbType.String,someLastName));using(IDataReadermyReader=command.ExecuteReader()){while(myReader.Read()){//做某事}}}}return0;//嗯?}catch(SqlExceptionsex){Console.Writeline(String.Format("Error-{0}rn{1}",sex.Message,sex.StackTace))}不检查NBselect*from可能是一个愚蠢的尝试tablewhereNAME='name'andLAST_NAME='last_name'而不是select*fromtablewhereNAME=nameandLAST_NAME=last_name编辑:如果name和last_name是你的参数,那么试试这个:SqlCommandmyCommand=newSqlCommand("select*from表,其中NAME=@name和LAST_NAME=@last_name",conn);myCommand.Parameters.AddWithValue("@name",name);myCommand.Parameters.AddWithValue("@last_name",last_name);使用参数化命令意味着你无法承受潜在的巨大安全漏洞——sql注入,这可以在手动连接命令文本时实现requires像其他人一样引用文本——但这并不是真正正确的答案。即使没有恶意,你也会遇到爱尔兰人的麻烦,看看当你试图找到奥尼尔先生时会发生什么。使用参数相反。要访问变量,您必须连接字符串并添加单引号:SqlCommandmyCommand=newSqlCommand("select*fromtablewhereNAME='"+name+"'andLAST_NAME='"+last_name+"'",conn);手动将sql命令构建为字符串应该被视为遗留技术。更好的方法是使用OR-mapper,例如linq-to-sql或EntityFramework。如果你只是想要一些非常简单的东西,我会推荐linq-to-sql以上就是C#学习教程的全部内容:SQLqueryfromC#分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
