15 DataReader和DataSet的异同
DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作. 16解释virtual、sealed、override和abstract的区别
virtual声明虚方法的关键字,说明该方法可以被重写; sealed说明该类不可被继承;override重写基类的方法;abstract声明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。 17 什么叫泛型 (generics)?
使用泛型,可以定义使用类型参数定义的类和/或方法。当客户端代码实例化类型时,会指定一个特定的类型作为参数。
五、计算题
1、定义方法float ave(float[] a)实现求数组的平均值,在主函数中使用委托调用该方法,求数组(23,45,12,67.8,12.3)的平均值。 public static float ave(float[] a) {
float sum = 0;
foreach (float n in a) sum = sum + n; return sum / a.Length; }
public delegate float F(float[] a); static void Main(string[] args) {
float[] a1 = new float[] { 23, 45, 12, 67.8F, 12.3F }; F f = new F(ave);
Console.WriteLine(\数组平均值:{0}\ Console.ReadKey(); }
2、List集合的使用
List listEmail = new List();
static string queryDomain;
private void Form1_Load(object sender, EventArgs e) { listEmail.Add(\ listEmail.Add(\
listEmail.Add(\ listEmail.Add(\ listEmail.Add(\ listEmail.Add(\ listEmail.Add(\ foreach(string str in listEmail) lstResult.Items.Add(str); }
3、使用Dictionary
public Form1() {
InitializeComponent(); }
public class StuInfo {
private string id; private string name; private string classes; private string telephone; public string Id {
get { return id; } set { id = value; } }
public string Name {
get { return name; } set { name = value; } }
public string Classes {
get { return classes; } set { classes = value; } }
public string Telephone {
get { return telephone; } set { telephone = value; } }
public StuInfo(string _id, string _name, string _classes, string _telephone) {
this.id = _id;
this.name = _name; this.classes = _classes;
this.telephone = _telephone; } }
Dictionary
StuInfo zhang = new StuInfo(\张三\软件143\ StuInfo li = new StuInfo(\李四\软件143\ StuInfo ma = new StuInfo(\马玲\软件144\ StuInfo wang = new StuInfo(\王强\软件145\ stuDic.Add(zhang.Id,zhang); stuDic.Add(li.Id, li); stuDic.Add(ma.Id, ma);
stuDic.Add(wang.Id, wang); panel1.Visible = false; this.Height = 270; fillGrid(stuDic); }
public void fillGrid(Dictionary
if (dataGridViewInfo.ColumnCount == 0)
{ DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn(); col1.HeaderText = \学号\
col1.DataPropertyName = \ col1.Name = \
dataGridViewInfo.Columns.Add(col1);
DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn(); col2.HeaderText = \姓名\
col2.DataPropertyName = \ col2.Name = \
dataGridViewInfo.Columns.Add(col2);
DataGridViewTextBoxColumn col3 = new DataGridViewTextBoxColumn(); col3.HeaderText = \班级\
col3.DataPropertyName = \ col3.Name = \
dataGridViewInfo.Columns.Add(col3);
DataGridViewTextBoxColumn col4 = new DataGridViewTextBoxColumn(); col4.HeaderText = \电ì?话??\
col4.DataPropertyName = \ col4.Name = \
dataGridViewInfo.Columns.Add(col4); }
BindingSource bs = new BindingSource(); bs.DataSource = dic.Values;
dataGridViewInfo.DataSource = bs; }
private void btnQuery_Click(object sender, EventArgs e) {
if (txtQueryInfo.Text == \ {
fillGrid(stuDic); return; }
if (stuDic.ContainsKey(txtQueryInfo.Text))
{
StuInfo stu=stuDic[txtQueryInfo.Text];
Dictionary
MessageBox.Show(\查无此人\出
错!\ } }
private void btnAdd_Click(object sender, EventArgs e) {
panel1.Visible = true; this.Height = 400; txtID.Focus(); }
private void btnSubmit_Click(object sender, EventArgs e) {
if(txtID.Enabled==true) {
if (stuDic.ContainsKey(txtID.Text)) {
MessageBox.Show(\学号已存在\出错!\MessageBoxIcon.Error); return; }
if(txtID.Text==\ {
MessageBox.Show(\信息不能为空!\出错\MessageBoxIcon.Error); return; }
StuInfo stu = new
StuInfo(txtID.Text,txtName.Text,txtClass.Text,txtTelephone.Text); stuDic.Add(stu.Id,stu); fillGrid(stuDic); txtID.Text=\ txtName.Text=\ txtClass.Text=\
txtTelephone.Text = \ panel1.Visible = false; this.Height = 270; } else
{
if ( txtName.Text == \ {
MessageBox.Show(\信息不能为空\出错\MessageBoxIcon.Error); return; }
stuDic.Remove(txtQueryInfo.Text);
StuInfo stu = new StuInfo(txtID.Text, txtName.Text, txtClass.Text, txtTelephone.Text);
stuDic.Add(stu.Id,stu); fillGrid(stuDic); txtID.Text=\ txtName.Text=\ txtClass.Text=\
txtTelephone.Text = \ panel1.Visible = false; this.Height = 270; txtID.Enabled = true;
} }
private void btnCancel_Click(object sender, EventArgs e) {
txtID.Text = \ txtName.Text = \ txtClass.Text = \
txtTelephone.Text = \ panel1.Visible = false; this.Height = 270; }
private void dataGridViewInfo_CellContentClick(object sender, DataGridViewCellEventArgs e) {
}
private void btnDel_Click(object sender, EventArgs e) {
if(!stuDic.ContainsKey(txtQueryInfo.Text)) {
MessageBox.Show(\用户不存在\错误\ return; } else
{
stuDic.Remove(txtQueryInfo.Text); fillGrid(stuDic);