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

时间:2016-03-04 20:33:17

标签: visual-studio wcf appharbor

这是我第一次在Visual Studio(2015)中使用WCF,我遇到了一些问题。 我在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;
    }

问题:当我尝试从中选择时:

    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)没有读取任何内容,只返回一个空值,即使测试表中有行。

请给我一些指示?我在线尝试了几种方法,没有运气..谢谢!

1 个答案:

答案 0 :(得分:0)

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

来源:MSDN SqlDataReader.Depth

  

最外面的表的深度为零。 .NET Framework数据   SQL Server提供程序不支持嵌套并始终返回   零。

如果要测试无行条件,请使用属性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.");
}