我的聲明說:select語句如何將所有由 「*」
string sqlCommandText = "SELECT * FROM ForumThread WHERE";
我怎樣才能讀取它*
?
我想是這樣,但它不工作:
if (reader["*"] != DBNull.Value)
{
result.TextContent = Convert.ToString(reader["*"]);
}
我的聲明說:select語句如何將所有由 「*」
string sqlCommandText = "SELECT * FROM ForumThread WHERE";
我怎樣才能讀取它*
?
我想是這樣,但它不工作:
if (reader["*"] != DBNull.Value)
{
result.TextContent = Convert.ToString(reader["*"]);
}
*
不是列,這是一個指令SELECT
只是抓住每列能找到。
列將單獨出現,因此您需要逐個遍歷列並獲取其內容。
要得到列的內容,你可以這樣做:
StringBuilder sb = new StringBuilder();
for (int index = 0; index < reader.FieldCount; index++)
{
object value = reader[index];
if (value != DBNull.Value)
sb.Append(value.ToString());
}
result.TextContent = sb.ToString();
然而,這將導致所有被一起搗碎。
舉例來說,如果您的結果集是這樣的:
A B C D
10 20 30 Some name here
那麼你得到的字符串看起來就像這樣:
102030Some名在此
這是你想要的嗎?
也許你告訴我們你想完成什麼,我們可以想出更好的答案?
此外,您可以使用此方法來檢索相關的字段名稱:
reader.GetName(/* index of the column */);
假設你ForumThread表包含ThreadResponse列,你真正想要閱讀ThreadResponse列,您可以使用下面的代碼:
//calculates the column ordinal based on column name
int ThreadResponseColumnIdx = reader.GetOrdinal("ThreadResponse");
//If there is a line in the result
if (reader.Read())
{
//read from the current line the ThreadResponse column
result.TextContent = reader.GetString(ThreadResponseColumnIdx);
}
儘量避免在select語句中使用*並顯式指定列。對性能更好,並留下提示,即代碼中的哪些字段。 – 2010-09-10 09:23:05
老兄,你需要先找到一本像樣的入門文章/關於SQL(T-SQL,PL/SQL,MySQL)的書...... – 2010-09-10 16:09:52