这是我第一次在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)没有读取任何内容,只返回一个空值,即使测试表中有行。
请给我一些指示?我在线尝试了几种方法,没有运气..谢谢!
答案 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.");
}