SelectQuerytoGetDatafromSQLServer我想在我的C#代码中运行一个SQLSelect查询。但我总是得到-1outputintresult=command。执行非查询();但是如果我用于删除或插入同一个表工作......ConnectString没问题。请检查以下代码SqlConnectionconn=newSqlConnection("DataSource=;InitialCatalog=;PersistSecurityInfo=True;UserID=;Password=");conn.Open();SqlCommandcommand=newSqlCommand("Selectidfrom[table1]wherename=@zip",conn);//command.Parameters.AddWithValue("@zip","india");intresult=command.ExecuteNonQuery();//结果给出-1输出..但是在使用(SqlDataReaderreader=command.ExecuteReader())插入它的1时{//在这里迭代你的结果Console.WriteLine(String.Format("{0}",reader["ID”]));}conn.Close();查询在SQLServer上运行良好,但我不明白为什么只选择查询不起作用。所有其他查询都有效。SqlCommand.ExecuteNonQuery方法您可以使用ExecuteNonQuery来执行目录操作(例如,查询数据库的结构或创建数据库对象,例如表),或者通过执行UPDATE、INSERT或DELETE语句来更改数据库中的数据而不用使用数据集。尽管ExecuteNonQuery不返回任何行,但任何输出参数或映射到参数的返回值都会填充数据。对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新表存在触发器时,返回值包括插入或更新操作影响的行数和触发器影响或影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也是-1。SqlCommand.ExecuteScalar方法在连接上执行Transact-SQL语句并返回受影响的行数。所以没有。SELECT语句返回的语句必须使用ExecuteScalar方法。参考:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx所以试试下面的代码:SqlConnectionconn=newSqlConnection("DataSource=;InitialCatalog=;PersistSecurityInfo=True;UserID=;Password=";conn.Open();SqlCommandcommand=newSqlCommand("Selectidfrom[table1]wherename=@zip",conn);命令.Parameters.AddWithValue("@zip","india");//intresult=command.ExecuteNonQuery();使用(SqlDataReaderreader=command.ExecuteReader()){if(reader.Read()){Console.WriteLine(String.Format("{0}",reader["id"]));}}conn.Close();根据MSDNhttp://msdn.microsoft.com/ru-ru/library/system。data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx结果是受影响的行数,并且由于您的查询已被选中,因此无论如何都不会影响任何行(即插入、删除或更新)。如果要返回查询的单行,请使用ExecuteScalar()而不是ExecuteNonQuery():intresult=(int)(command.ExecuteScalar());但是,如果您想要返回许多行,ExecuteReader()是唯一的选择:...}}您可以使用ExecuteScalar()而不是ExecuteNonQuery()来获取单个结果并像这样使用它Int32result=(Int32)command.ExecuteScalar();Console.WriteLine(String.Format("{0}",结果));它将执行查询并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。如果您只想返回一行,请使用(SqlDataReaderreader=command.ExecuteReader()){//在此处迭代结果Console.WriteLine(String.Format("{0}",reader[“ID”]));}因为它会再次执行你的命令并影响你的页面性能。这是设计使然。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx对于UPDATE、INSERT和DELETE语句,返回值是受影响的行命令编号。当插入或更新表存在触发器时,返回值包括插入或更新操作影响的行数和触发器影响或影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也是-1。您应该使用ExecuteScalar()(返回第一行第一列)而不是ExecuteNonQuery()(返回受影响的行数)。您应该参考executioncalar和executenonquery之间的区别以获取更多详细信息。希望能帮到你!还需要加上参数@zip以上是C#学习教程:选择查询获取SQLServer数据共享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—SqlConnectionconn=newSqlConnection("DataSource=;InitialCatalog=;PersistSecurityInfo=True;UserID=;密码=”;conn.Open();SqlCommandcommand=newSqlCommand("Selectidfrom[table1]wherename=@zip",conn);////向命令添加新的SqlParameter。//command.Parameters.AddWithValue("@zip","india");int结果=(Int32)(command.ExecuteScalar());using(SqlDataReaderreader=command.ExecuteReader()){//在这里迭代你的结果Console.WriteLine(String.Format("{0}",reader["id"]));}conn.Close();本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
