目的:使用多個select語句填充結構,使用C#和SQLServer2005的一個人如何使用多個SELECT語句
問題:目前我可以填充使用一個select語句的結構,但由於到這個特定的select語句的本質,爲了生成正確的結果,查詢需要被分解,因此我必須使用多個選擇來填充一個結構。這是可能的還是我以錯誤的方式去做?以下是我正在使用的代碼
public static bool GetColumns()
{
String sql = "";
try
{
conn.Open();
sql = @"SELECT
database.dbo.table1.column1
FROM
database.dbo.table1;
SELECT
database.dbo.table2.column2
FROM
database.dbo.table2;
SELECT
database.dbo.table3.column3
FROM
database.dbo.table3 ;" ;
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
MyStructure struct1 = new MyStructure();
while (dr.Read())
{
struct1.column1 = dr.GetValue(0);
struct1.column2 = dr.GetValue(1);
struct1.column3 = dr.GetValue(2);
MyArrayList.Add(struct1);
}
dr.Close();
conn.Close();
return true;
}
catch (Exception ex)
{
if (conn.State == ConnectionState.Open)
conn.Close();
error.LogError(ex, "", "")
return false
}
上面的代碼不起作用,因爲我列出的值超出了每個單獨的select語句的範圍。什麼是正確的方法?
Write MyStructure struct1 = new MyStructure();在給它分配值之前,而不是之後。也就是說,在(dr.Read())的同時,把這條線放在下面。 – varocarbas
謝謝,我原來的代碼不是這樣寫的。在 –
上覆制時出錯如果列數爲3(或更多),則您的代碼應該可以工作。也許有一些空值進入:如果dr == null,則設置標題條件跳過。您也可以依靠dr [index]並對目標類型執行Cast。 – varocarbas