簡體   English   中英

SqlCommand 和 ExecuteReader 返回非公共成員

[英]SqlCommand and ExecuteReader return Non-Public Members

我使用 SqlCommand 從 .sql 文件執行腳本查詢。

我用 ExecuteReader 得到結果。

但是值是非公共成員,我無法訪問它。

知道為什么以及如何解決嗎?

代碼

string root = AppDomain.CurrentDomain.BaseDirectory;
string script = File.ReadAllText(root + @"..\SGBD\select_user_from_all_bases.sql");
string connectionString = @"Data Source=(local);Integrated Security=SSPI";
var conn = new SqlConnection(connectionString);

conn.Open();

var users = new SqlCommand(script, conn).ExecuteReader();

foreach (var user in users)
{

}

conn.Close();

在此處輸入圖片說明

這是因為 ExecuteReader() 返回一個 SqlDataReader,而不是條目。

查看 SqlDataReader 的文檔,看看你應該怎么做

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

如前所述,您可能不應該使用foreach 出於兼容性原因,需要實現,但是這里一個while (reader.Read())循環更簡單。 也就是說,如果您願意,無論如何都可以使用foreach user值實現IDataRecord ,您可以使用該接口訪問這些值。

foreach (IDataRecord user in reader)
{
    // access user[0], user["field"], etc. here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM