2013-06-25 83 views
1

我正在實現連接我實現了ConnectInsert的方法。這些方法正在工作。但我有問題如何實施getdata()方法(從數據庫中獲取數據)。在將查詢發送給方法後,我需要知道如何使用SqlDataReaderSQL Server中的連接類

public String GetData(string _query) 
{ 
    try 
    { 
     SqlCommand cmd = new SqlCommand(_query, this.dbCon); 
     results = cmd.ExecuteReader().ToString(); 
     return results; 
    } 
    catch (Exception) 
    { 
     return "Error"; 
    } 
} 

我想完成這個get方法,我使用的是SQL Server和C#

回答

0

嘗試是這樣的:

private void TestMethod(string sqlCmd, List<string> myColumns) 
{ 
    try 
    { 
     SqlDataReader myReader = null; 
     SqlCommand myCommand = new SqlCommand(sqlCmd, myConnection); 
     myReader = myCommand.ExecuteReader(); 
     while(myReader.Read()) 
     { 
      foreach (var col in myColumns) 
      { 
       Console.WriteLine(myReader[col].ToString());     
      } 
     } 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.ToString()); 
    } 
} 

此外,你可以看看this Article

+0

我想用這種方法方法不止一個查詢如何改變這用於多個查詢 – user2490167

+0

提取SQL命令作爲參數,因此您可以每次使用不同的查詢調用方法。 – CloudyMarble

+0

如何更改while(myReader.Read()){} – user2490167

0

這是一個相當簡單的例子,你可以看看:

public SqlDataReader ExecuteReader(SqlCommand cmd) 
     { 
      return cmd.ExecuteReader(); 
     } 

使用這種方法,我可以執行以下命令:

var reader = ExecuteReader(new SqlCommand("SELECT ColumnA, ColumnB FROM Table")); 

string ColA = string.empty; 
string ColB = string.empty; 

while (reader.Read()) 
     ColA = reader["ColumnA"].ToString(); 
     ColB = reader["ColumnB"].ToString(); 

reader.Close(); 
reader.Dispose(); 
+0

我想爲多個查詢使用此方法方法如何更改此查詢以用於多個查詢 – user2490167

+0

@ user2490167每次調用ExecuteReader時,都可以在不同的SqlCommand中通過。因此,它可以用於任何你想要的查詢,並且它會爲它返回SqlDataReader。 – JBond

1

不要推倒重來。在大多數情況下,類型化數據集和EF都是在.NET中檢索和操作數據的最佳方法。 MS已經以比你可能達到的更好的方式寫下了你想要寫的所有內容。你花在學習這兩種技術上的時間會給你帶來持久的好處。由於您正在使用SQL Server,因此對您而言更爲正確。

0

寫一個方法來獲得如下的數據讀取器,

private SqlDataReader TestMethod(string sqlCmd, List<string> myColumns) 
{ 
try{ 
    SqlDataReader myReader = null; 
    SqlCommand myCommand = new SqlCommand(sqlCmd, myConnection); 
    myReader = myCommand.ExecuteReader(); 
    return myReader; 
    } 
    catch (Exception e) 
    { 
    Console.WriteLine(e.ToString()); 
    } 
} 

,然後只用它,

SqlDataReader myReader = TestMethod("your query",youtcolumnlist) 
while(myReader.Read()) 
{ 

    foreach (var col in myColumns) 
    { 
     Console.WriteLine(myReader[col].ToString());     
    } 
}