【发布时间】:2017-09-30 08:18:11
【问题描述】:
我是使用 C# 的新手,现在正在搞乱 SQL Server 连接。我的连接正常,我可以运行查询,只是无法查看返回的任何数据。我已经看到您需要运行command.ExecuteReader() 才能取回数据,但除了第一列和第一行之外,我无法获取任何其他数据。
这是我的代码:
<%@ WebHandler Language="C#" Class="biquery_query" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
public class biquery_query : IHttpHandler {
public void ProcessRequest (HttpContext context) {
var query = context.Request.QueryString["query"];
query = "SELECT * FROM [hidden].[dbo].[hidden]";
SqlConnection sqlConnection = new SqlConnection(@"Data Source=hidden;Initial Catalog=hidden;User ID=hidden;Password=hidden;");
// Create Query Command
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.Text;
command.CommandText = query;
command.Connection = sqlConnection;
// Open connection and execute query
sqlConnection.Open();
command.ExecuteNonQuery();
using(SqlDataReader rdr = command.ExecuteReader())
{
while(rdr.Read())
{
string app_id= rdr["app_id"].ToString();
string app_os= rdr["app_os"].ToString();
string date= rdr["date"].ToString();
context.Response.Write(app_id);
}
}
sqlConnection.Close();
}
public bool IsReusable {
get {
return false;
}
}
}
我的数据库表有 5 列 (app_id, app_os, date, unix, users)。
有没有办法可以选择rdr["app_id"][0] 来获取第一个app_id 或rdr["users"][30]。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
每次调用
rdr.Read()都会返回一行。每行按列名索引,即rdr["app_id"] -
@MrZander 为什么它只返回一行呢?我的数据库中有多个。
-
@JoeScotto 在您的代码之外运行 Select 查询,返回多少行?
-
一个while循环就好了。我只想从我的数据库中获取数据,然后将其放入字典或其他东西中以进一步处理它。不过,现在的主要优先事项是获取它,以便 while 循环不仅输出一行,还应该遍历所有行……我想。
-
你为什么打电话给
ExecuteNonQuery?仅致电ExecuteReader。ExecuteNonQuery用于不返回结果集的查询。
标签: c# asp.net sql-server