防SQL注入和SqlDataAdapter、SqlDataReader基本使用

string sql = string.Format("select * from StudentOne where 學號=@學號");

string constr = ConfigurationManager.ConnectionStrings["Student"].ConnectionString;

using (SqlConnection conn = new SqlConnection(constr))

{

conn.Open();

SqlCommand cmd = new SqlCommand(sql, conn);

SqlParameter para = new SqlParameter("@學號",SqlDbType.Int);//設置參數

para.Value = 1;

cmd.Parameters.Add(para);

SqlDataReader reader = cmd.ExecuteReader();

if (reader.Read()) {

sb.Append(string.Format());//reader["列名"];

SqlDataReader 為一直和數據庫連接。

SqlDataAdapter 從數據庫中讀到內存DataSet,然后與內存中的數據庫讀取數據;

string connstr=ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;

DataSet ds=new DataSet();

SqlConnection conn=new SqlConnection(connstr);

//這里注意的如果使用的是SqlReaderAdapter,不再調用conn.Open()方法;

SqlCommand cmd=new SqlCommand("SQL語句",connstr);

SqlReaderAdapter adapter =new SqlReaderAdapter(cmd);

adapter.Fill(ds,"TablerName");使用名字,

adapter.Fill(ds);

GridView1.DataSource = ds.Tables["Movies"];// 使用TableName進行指定

GridView1.DataBind();?? ? ? ? ? ? ? ??

GridView2.DataSource = ds.Tables[1];? // 使用inde進行指定?? ? ? ? ? ? ? ??

GridView2.DataBind();


DataSet,DataTable,DataReader,DataAdapter區別

1、DataSet是用來做連接sql的一種方法,意思是把數據庫的副本存在應用程序里,相當于存在內存中的數據庫,應用程序開始運行時,把數據庫相關數據保存到DataSet.

2、DataTable表示內存中數據的一個表.常和DefaultView使用獲取可能包括篩選視圖或游標位置的表的自定義視圖。

?3、DataReader對象是用來讀取數據庫的最簡單方式,它只能讀取,不能寫入,并且是從頭至尾往下讀的,無法只讀某條數據,但它占用內存小,速度快。

4、DataAdapter對象是用來讀取數據庫.可讀取寫入數據,某條數據超著強,但它占用內存比dataReader大,速度慢,一般和DataSet連用.

5、Dataset表示一個數據集,是數據在內存中的緩存。 可以包括多個表,DataSet 連接數據庫時是非面向連接的。把表全部讀到Sql中的緩沖池,并斷開于數據庫的連接,DataReader 連接數據庫時是面向連接的。讀表時,只能向前讀取,讀完數據后由用戶決定是否斷開連接。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容