久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

asp.net學習之a(chǎn)do.net(無連接模式中的DataAdapter)

 Dragon_chen 2016-06-04

    在非連接模式下,,主要討論以下對象:DataAdapter。
    DataAdpater的作用是在物理存儲模式的數(shù)據(jù)和內(nèi)存之間進行數(shù)據(jù)傳遞。DataTable是用在內(nèi)存中表示數(shù)據(jù)庫表,。DataSet是內(nèi)存中表示數(shù)據(jù)庫(表,、表關(guān)系的集合)。DataView是用于在內(nèi)存中表示數(shù)據(jù)庫視圖,。 
    DataAdapter對象在后臺使用DataReader對象從數(shù)據(jù)庫中獲取數(shù)據(jù),;DataView對象來對數(shù)據(jù)進行過濾和排序;DataTable對象可以用來跟蹤數(shù)據(jù)記錄的改變情況,,并決定是否接受或者拒絕這些改變,。 
 

1.DataAdapter對象

     DataAdapter對象在物理數(shù)據(jù)庫和內(nèi)存數(shù)據(jù)表之間起橋梁的作用。一般用DataAdapter對象從數(shù)據(jù)庫獲取數(shù)據(jù)并裝入DataTable對象中,,也通過DataAdapter對象將DataTable對象中數(shù)據(jù)的修改寫回到物理數(shù)據(jù)庫,。
例1: 一個簡單的DataAdapter對象的使用
=== App_Code\DawnDataObject.cs ===

Code

=== showMovies.aspx

Code


2.DataAdapter的構(gòu)造

    在例1中,我們看到了如何構(gòu)造一個SqlDataAdapter對象,,并且使用Fill方法把數(shù)據(jù)表填到一個DataTable中,。它看起來是像下面這樣子的:

SqlDataAdapter dad = new SqlDataAdapter("Select Id,Title,Director from Movies", _connectionstring);
DataTable dt = new DataTable();
dad.Fill(dt);

    在以上的例子中,看不到SqlConnection,SqlCommand對象的出象,,其實,,它們還是隱含存在的,這些對象被SqlDataAdapter對象調(diào)用了而已,,就連SqlConnection對象的Open()方法的調(diào)用也由SqlDataAdapter對象來代勞了,。
    如果要顯式使用SqlConnection,SqlCommand對象,可以像以下代碼這樣:
例2: SqlAdapter對象的另外構(gòu)造方法

復制代碼
public DataTable GetAll()
{
    DataTable dt = new DataTable();
    using(SqlConnection conn = new SqlConnection(_connectionstring)) {
        SqlCommand command = new SqlCommand("Select Id,Title,Director from Movies", conn);
        SqlDataAdapter dad = new SqlDataAdapter(command);
        // 初始化Table
        dad.Fill(dt);
    }
    return dt;
}
復制代碼

    以上,,可以看出,,SqlDataAdapter構(gòu)造函數(shù)可以傳入一個SqlCommand對象。在ADO.Net中SqlDataAdapter構(gòu)造函數(shù)可以使用以下幾種方法進行構(gòu)造
     ● SqlDataAdapter(): 無參數(shù),,構(gòu)造后,,可以給SqlDataAdapter對象的SelectCommand屬性分配一個SqlCommand對象。
         作為補充,,SqlDataAdapter還有UpdateCommand,、DeleteCommand、InsertCommand屬性,,這些屬性在后面會提到,。
     ● SqlDataAdapter(string commandText, SqlConnection connection): 第一個參數(shù)為T-SQL語句,第二個參數(shù)為一個SqlConnection對象,。
        使用這個構(gòu)造函數(shù)時,,不需要顯式聲明SqlCommand對象。
     ● SqlDataAdapter(string commandText, string connectionString): 例1使用的方法,,不需要顯式聲明SqlConnection與SqlCommand對象
     ● SqlDataAdapter(SqlCommand command): 例2使用的方法,。

3. SqlDataAdapter的Fill/FillSchema方法

     DataAdapter對象的Fill方法,,該方法不止可以傳入DataTable作為參數(shù),也可以傳入DataSet作為參數(shù),。
     DataAdapter對象的FillSchema方法,,可以向DataSet/DataTable參數(shù)添加現(xiàn)有的數(shù)據(jù)庫約束。
     3.1 賦值到DataSet
         因為DataSet是DataTable的集合,,所以可以Fill多張表到DataSet對象中,。
例3: Fill多張數(shù)據(jù)表到DataSet對象

復制代碼
private void buttonFillData_Click(object sender, EventArgs e)
{
    DataSet userData = new DataSet();
    using (SqlConnection testConnection = new SqlConnection(connectionString))  {
        SqlCommand testCommand = testConnection.CreateCommand();
        testCommand.CommandText = "Select FirstName, LastName from userTable; Select PermissionType from PermissionsTable";
        SqlDataAdapter dataAdapter = new SqlDataAdapter(testCommand);
        dataAdapter.Fill(userData);
    } // testConnection.Dispose called automatically.
}
復制代碼


    3.2 Fill方法的重載
       默認的,當調(diào)用SqlDataAdapter.Fill(DataSet)時,,并沒有指定Table名,,所以,要想取得DataSet中的DataTable對象,,需要使用Index序號,。
       也可以指定當Fill進DataSet時,相應(yīng)表的TableName屬性,,當需要指定TableName屬性時,,調(diào)用以下Fill方法:
        public int Fill(DataSet dataSet, string srcTable);
      以下的例子是它們之間的區(qū)別:
例4: 調(diào)用Fill方法填充到DataSet時,,指定TableName屬性

復制代碼
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string _connectionstring = WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"].
            ConnectionString.ToString();
            DataSet ds = new DataSet();
            using (SqlConnection conn = new SqlConnection(_connectionstring))
            {
                SqlCommand command = new SqlCommand("Select Id,Title,Director from Movies", conn);
                SqlDataAdapter dad = new SqlDataAdapter(command);
                dad.Fill(ds, "Movies");  // 調(diào)用Fill方法時,,使用TableName
                dad.SelectCommand = new SqlCommand("select Id,name from MovieCategories", conn);
                dad.Fill(ds);   // 為使用TableName
                GridView1.DataSource = ds.Tables["Movies"]; // 使用TableName進行指定
                GridView1.DataBind();
                GridView2.DataSource = ds.Tables[1];  // 使用inde進行指定
                GridView2.DataBind();
            }
        }
    }
復制代碼

        Fill被重載的方法有很多,具體可以查看:http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.fill.aspx

    3.3 DataAdapter的FillSchema方法
       SqlDataAdapter 類提供 FillFillSchema 兩種方法,,這對于加載這些數(shù)據(jù)很關(guān)鍵,。這兩種方法均可將信息加載到 DataSet 中。Fill 加載數(shù)據(jù)本身,,而 FillSchema 加載有關(guān)特定表的所有可用的元數(shù)據(jù)(如列名,、主鍵和約束)。處理數(shù)據(jù)加載的正確方式是先運行 FillSchema,,后運行 Fill,。例如:
daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");
        具體的參照以下幾篇文章:
       
http://msdn.microsoft.com/zh-cn/library/49z48hxc.aspx
        http://support.microsoft.com/kb/314145/zh-cn 
        例5:調(diào)用FillSchema方法:
//一般先用FillSchema來填入詳細的元數(shù)據(jù)信息,再用Fill來填充數(shù)據(jù),,例如:

復制代碼
sqlDataAdapter1.FillSchema(dataSet1,SchemaType.Source,"authors");
sqlDataAdapter1.Fill(dataSet1,"authors");
DataColumn[] colArr;
colArr = dataSet1.Tables["authors"].PrimaryKey;
MessageBox.Show("Column Count: " + colArr.Length.ToString());
for(int i = 0; i < colArr.Length; i++)
{
    MessageBox.Show(colArr[i].ColumnName + "   " + colArr[i].DataType.ToString());
}
復制代碼

    在上例中,,如果不調(diào)用FillSchema, 缺省情況下不會填如PrimaryKey信息。
    另外,,DataAdapter還有一個MissingSchemaAction屬性,,該屬性可以接受以下Enum值:
      ● Add---在添加新行時向DataTable中添加必須的附加列(默認值)
      ● AddWithKey---在添加新行時向DataTAble中添加所有必須的列。
      ● Error---在添加新行時,,如果此行不匹配現(xiàn)在的DataTable,,就引發(fā)一個錯誤。
      ● Ignore---在添加新行時,,如果此行中包含DataTable中沒有的列,,那么忽略多余的列,。
    ds.MissingSchemaAction = MissingSchemaAction.AddWithkey

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多