小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ADO.Net都有哪些從數(shù)據(jù)庫獲取數(shù)據(jù)的方式

 悟靜 2011-10-12

(一).說明

       初學(xué)ADO.Net會被ADO.Net訪問數(shù)據(jù)庫方式弄得頭暈,感覺無從下手.
本文將它們整合在一起,文章并沒有涉及太多深層知識. 只是我覺得將它們集中在一起,
在比較中學(xué)習(xí)更快,更清晰一些:
本文列舉了用ADO.Net訪問數(shù)據(jù)庫的所有方式:
1.用Sql語句訪問數(shù)據(jù)庫
2.用無參存儲過程訪問數(shù)據(jù)庫
3.用有參存儲過程訪問數(shù)據(jù)庫
4.使用 CommandBuilder.DeriveParameters 來填充 Command 對象的 Parameters 集合,來訪問數(shù)據(jù)庫
5.使用SqlDataReader對象輸出數(shù)據(jù).

(二).代碼示例

用到的存儲過程 myprocedure  SQL代碼:
---有參

CREATE procedure dbo.[myprocedure]
(
 @start int,
 @end int
)
as
select  * from products
where productid>=@start and productid<=@end

---無參
CREATE procedure dbo.[myprocedure]
as
return 'Hello'
GO

private DataSet GetDataSet(int sign)  
  {

   //*******自定義連接字符串********/
   string connectionStr="server=(localhost);uid=sa;pwd=;database=NorthWind";  
   
   SqlConnection myConnection=new SqlConnection(connectionStr);
   DataSet myDataSet=new DataSet();
   string sqlProcedureName="myprocedure";  //此存儲過程必須事先已經(jīng)定義好了.
   if(sign==1)//執(zhí)行語句.  (最常用的情況)

   {    
    string queryStr="select * from products";    
    SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr);
    
    myAdapter.Fill(myDataSet);
    return myDataSet;
   }


   if(sign==2)//調(diào)用SQL無參存儲過程,此存儲過程返回select查詢結(jié)果
   {    
    SqlCommand myCommand=new SqlCommand(sqlProcedureName,myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;
    SqlDataAdapter myAdapter=new SqlDataAdapter(sqlProcedureName,myConnection);
    myAdapter.Fill(myDataSet);
    return myDataSet;    
   }
   if(sign==3)//調(diào)用SQL有參存儲過程,此存儲過程返回select查詢結(jié)果,且傳遞參數(shù)
   {
    SqlCommand myCommand=new SqlCommand(sqlProcedureName,myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;
    
    SqlParameter start=new SqlParameter("@start",SqlDbType.Int,4); // 定義第一個(gè)參數(shù)

    start.Value=1;
    myCommand.Parameters.Add(start);

    SqlParameter end=new SqlParameter("@end",SqlDbType.Int,4); // 定義第二個(gè)參數(shù)

    end.Value=5;
    myCommand.Parameters.Add(end);
    
    SqlDataAdapter myAdapter=new SqlDataAdapter(sqlProcedureName,myConnection);
    myAdapter.SelectCommand=myCommand;               
    
    myAdapter.Fill(myDataSet);
    return myDataSet; 
   }
   if(sign==4)  //演示如何使用 CommandBuilder.DeriveParameters 來填充 Command 對象的 Parameters 集合
   {
    SqlCommand myCommand=new SqlCommand(sqlProcedureName,myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;
    SqlDataAdapter myAdapter=new SqlDataAdapter(sqlProcedureName,myConnection);
    
    myConnection.Open();  //如果不打開連接,下一句將不知道從哪里去取所需的存儲過程
    SqlCommandBuilder.DeriveParameters(myCommand);              
    myCommand.Parameters["@start"].Value=1;
    myCommand.Parameters["@end"].Value=5;
    myAdapter.SelectCommand=myCommand;               
    
    myAdapter.Fill(myDataSet);
    return myDataSet; 

   }
   if(sign==5)//練習(xí)使用SqlDataReader,結(jié)果在控制臺輸出
   {
    SqlCommand myCommand=new SqlCommand(sqlProcedureName,myConnection);
    myCommand.CommandType=CommandType.StoredProcedure;
    
    SqlParameter start=new SqlParameter("@start",SqlDbType.Int,4); // 把4改變或去掉
    start.Value=1;
    myCommand.Parameters.Add(start);

    SqlParameter end=new SqlParameter("@end",SqlDbType.Int,4); // 把4改變或去掉
    end.Value=5;
    myCommand.Parameters.Add(end);
    
    SqlDataAdapter myAdapter=new SqlDataAdapter(sqlProcedureName,myConnection);
    myAdapter.SelectCommand=myCommand;        

    myConnection.Open();
    SqlDataReader myReader = myCommand.ExecuteReader();

    Console.WriteLine("{0}, {1}", myReader.GetName(0), myReader.GetName(1));

    while (myReader.Read())
    {
     //Console.WriteLine("{0},{1}", myReader.GetString(0), myReader.GetString(1));  //?不對
     Console.WriteLine("{0},{1}", myReader.GetValue(0), myReader.GetValue(1));
    }
               
    myConnection.Close();
    DataTable myTable=new DataTable();
    myDataSet.Tables.Add(myTable);
    return myDataSet;
   }
     return new DataSet();
  }

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多