閱讀器、更新、圖片
SqlDataReader:
一、sqlDataReder對象,可以從數據庫中檢索只讀的數據,它每次從查詢結果中讀取一行到內存。
采用sqlDataReder的Read方法行讀取數據,如果讀到記錄就返回true,否則返回false。
如圖:一個顯示學生信息的界面:
在建立相應SQL連接後,
1、調用SQL命令的方法ExecuteReader來執行命令,並獲取數據閱讀器:
SqlDataReader.sqlDataReader=sqlCommand.ExecuteReader();
2、若數據閱讀器成功讀取到下一條記錄(首次查詢則表示第一條記錄)
if(sqlDataReader.Read())
3、在數據閱讀器的索引器中指定列名,從而訪問當前記錄的指定列的值,並賦予相應控件
sqlDataReader["No"].ToString();
4、 當提取的數據涉及時間時,先使用DataTime強制裝換成時間類型,再通過toShortDateString()獲取日期的部分。 代碼整合如下:if(sqlDataReader.Read()) {
this.txb_No.Text=sqlDataReader["No"].ToString();
this.txb_Name.Text = sqlDataReader["Name"].ToString();
this.txb_Gender.Text = sqlDataReader["Gender"].ToString();
this.txb_BirthDate.Text (DateTime)sqlDataReader["BirthDate"]).ToShortDateString();
this.txb_Class.Text = sqlDataReader["Class"].ToString();
this.txb_Speciality.Text = sqlDataReader["Speciality"].ToString();
}
2、 當對上圖的進行改進: 建立SQL連接後,定義sqlcommand1、sqlcommand2,並進行實例化; Sqlcommand1.CommandText=”SELECT * FROM tb_class;”; Sqlcommand2.CommandText=”SELECT * FROM tb_Student WHERE No=@No;”; 聲明SQL數據適配器,借助構造函數,將其SelectCommand屬性設為先前創建的SQL命令。 SqlDataAdapter sqldataadapter=new SqlDataadapter(); Sqldataadapter.SelectCommand=sqlcommand1; 聲明實例化數據表,用於保存所有班級,以用作下拉框的數據源。 DataTable classTable = new DataTable(); Sql數據適配器讀取數據,並填充班級數據表 sqlDataAdapter.Fill(classTable); 將班級下拉框的數據源設為班級數據表,顯示成員設為數據表的名稱列,值成員設為班級數據表的編號列; this.cmb_Class.DataSource = classTable; this.cmb_Class.DisplayMember = "Name"; this.cmb_Class.ValueMember = "No"; 性別的單選按鈕,“Gender"的值以0、1表示女、男,並將讀到的值轉成布爾類型。 this.rdb_Male.Checked = (bool)sqlDataReader["Gender"]; this.rdb_Female.Checked = !(bool)sqlDataReader["Gender"]; 3、 更新功能 在建立數據庫連接後,命令語句采用更新SQL語句: sqlCommand.CommandText="UPDATE?tb_Student”+"SETName=@Name,Gender=@Gender,BirthDate=@BirthDate,ClassNo=@ClassNo,Speciality=@Speciality"+" WHERE No=@No;"; 並對參數進行賦值。 調用SQL命令的方法ExcuteNonQuery來執行命令,向數據庫寫入數據,並返回受影響的行數。 int rowAffected = sqlCommand.ExecuteNonQuery(); 在消息框顯示受影響的行。 MessageBox.Show("更新" + rowAffected.ToString() + "行。"); 4、 顯示圖片 / 在“打開照片”按鈕中: 先聲明並實例化一個打開文件的對話框,並設置文件的對話框標題(Title )、文件格式過濾器(Filter )、初始目錄( InitialDirectory )。 OpenFileDialog openPhotoDialog = new OpenFileDialog() { Title = "打開照片文件(位圖格式)" , Filter = "BMP Files (*.bmp)|*.bmp" , InitialDirectory = @"C:\" } 顯示打開文件對話框,若打開文件對話框的對話結果為點擊OK鍵,將對話框獲得的文件名,存入本窗體的私有字段中,調用圖像的靜態方法FromFile從指定文件中讀取圖像,並賦予圖像框; if (openPhotoDialog.ShowDialog() == DialogResult.OK) { this.PhotoFileName = openPhotoDialog.FileName; this.ptb_Photo.Image = Image.FromFile(this.PhotoFileName); }
閱讀器、更新、圖片