如何 SELECT * 从一个 wcf 应用程序,数据库托管在 appharbor

How to SELECT * from an wcf application, database hosted in appharbor

这是我第一次玩 WCF visual studio (2015),我 运行 遇到了一些问题。 我的数据库托管在 appharbor 中。我设法将新项目插入数据库:

    public Test Insert (Test TestTable)
    {
        SqlConnection conGet = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand(connectionString, conGet);
        cmd.Parameters.AddWithValue("@testID", testTable.testID);
        cmd.Parameters.AddWithValue("@testName", testTable.testName);

        conGet.Open();
        cmd.CommandText = "INSERT INTO TestTable (testID, testName) VALUES (@testID, @testName)";
        cmd.ExecuteScalar();
        conGet.Close();
        return testTable;
    }

问题:当我尝试从中 select 时:

    public Test GetData(Test test)
    {
        SqlConnection conPut = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("SELECT * FROM TestTable", conPut);
        conPut.Open();
        SqlDataReader rd = cmd.ExecuteReader();
        if (rd.Depth>0)
        {
            while (rd.Read())
            {
                test.testID = (int)rd["testID"];
                test.testName = rd["testName"].ToString();
            }
        }
        else
        {
            Console.WriteLine("No rows found.");
        }
        conPut.Close();
        return test;
    }

rd (SqlDataReader) 没有读取任何内容,只是 returns 一个空值,即使测试 table 中有行。

请指点一下好吗?网上试了好几​​种方法,都没有成功。。谢谢!

删除深度测试。 Sql DataProvider 不支持 属性。它始终为零

来源:MSDN SqlDataReader.Depth

The outermost table has a depth of zero. The .NET Framework Data Provider for SQL Server does not support nesting and always returns zero.

如果要测试没有行的情况,那么使用 属性 HasRows

SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
    while (rd.Read())
    {
        test.testID = (int)rd["testID"];
        test.testName = rd["testName"].ToString();
    }
}
else
{
    Console.WriteLine("No rows found.");
}