2013年9月9日 星期一

使用 DataReader 擷取資料

使用 DataReader 擷取資料時會建立 Command 物件的執行個體,再藉由呼叫 Command.ExecuteReader 擷取資料來源的資料列,建立 DataReader。

步驟
1.引用SqlConnection物件連接資料庫
2.SqlCommand執行sql指令,需要連接資料庫
3.SqlDataReader讀取SqlCommand執行內容

4.關閉 DataReader
5.關閉資料庫連接 connection.close  ,此處沒寫關閉資料庫是因為使用using 



[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
using System.Data;
using System.Data.SqlClient;        

            string cs = "Data Source=.;Initial Catalog=AAC;User Id=xxx;Password=123456";

            string sql_str = "Select * from Trans_FTP where File_id='393499'";
             //1.引用SqlConnection物件連接資料庫
            using (SqlConnection connection = new SqlConnection(cs))
            {
                //2.SqlCommand執行sql指令,需要連接資料庫
                SqlCommand command = new SqlCommand(sql_str, connection);
                connection.Open();

                //3.SqlDataReader讀取SqlCommand執行內容
                SqlDataReader reader = command.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
                            reader.GetString(1));
                    }
                }
                else
                {
                    Console.WriteLine("No rows found.");
                }
                reader.Close(); //4.關閉 DataReader
            }
        
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]


完畢。



1.
DataReader 提供未緩衝的資料流,可使程序邏輯有效地循序處理來自資料來源的結果。需要擷取大量資料時,DataReader 是不錯的選擇,因為資料不會快取至記憶體。

2.
用完 DataReader 物件後,請務必呼叫 Close 方法。
如果您的 Command 包含輸出參數或傳回值,則必須等到 DataReader 關閉後才能使用它們。
請注意,DataReader 開啟期間,Connection 只能供該 DataReader 使用。 必須等到原始 DataReader 關閉後,才能執行 Connection 的任何命令,包括建立其他 DataReader。

3.
以上用於讀取資料庫,只能讀不能寫,讀出來後想修改 刪除怎麼做呢?
請看下一篇

查詢  →   command.ExecuteReader();         回傳sqlDataReader

新增、修改、刪除 →   command.ExecuteNonQuery();           回傳int





環境:
C# .net

資料:
MSDN  --  使用 DataReader 擷取資料 http://msdn.microsoft.com/zh-tw/library/haa3afyz.aspx


===================================================
以下是不用using的寫法:
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

            SqlConnection Conn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=AdventureWorks;UserId=xxx;Password=123");

            Conn.Open();

            string sql_str = "Select * form Trans_FTP where Trans_Status_WWW='T'";

            SqlCommand cmd = null;
            cmd = new SqlCommand(sql_str, Conn);

            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                aa = dr["Trans_Status_WWW"].ToString();
            }
         
            Conn.Close();

]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

沒有留言:

張貼留言