Vindows程序设计 第10章ADO.NET数据库
Windows 程序设计 第10章 ADO.NET数据库
本章目标 掌握ADO.NET的功能和组成 ■掌握使用Connection对象连接到数据源的方法 ■掌握执行SQL语句的方法
2 本章目标 ▪ 掌握ADO.NET 的功能和组成 ▪ 掌握使用 Connection 对象连接到数据源的方法 ▪ 掌握执行SQL语句的方法
关于数据表中的字段类型 string型字段 ■char:存储定长数据。例如:char(Io) ■varchar:存储变长数据。 ■nchar:它表示存储的是Unicode数据类型的字符。 ■text:存储可变长度的非Jnicode数据. ■王 整型 ■bigint:存储大小为8个字节。 ■int:存储大小为4个字节。 ■smallint:存储大小为2个字节。 ■tinyint:存储大小为1个字节。 3
3 关于数据表中的字段类型 ▪ string型字段 ◼ char:存储定长数据。例如:char(10) ◼ varchar:存储变长数据。 ◼ nchar:它表示存储的是Unicode数据类型的字符。 ◼ text:存储可变长度的非Unicode数据. ▪ 整型 ◼ bigint :存储大小为 8 个字节。 ◼ int :存储大小为 4 个字节。 ◼ smallint :存储大小为 2 个字节。 ◼ tinyint :存储大小为 1 个字节
授课内容 DataReader 其它类型介绍 图片的处理 小结
4 授课内容 DataReader 小结 其它类型介绍 图片的处理
DataReader ■对象是一个简单的数据集, 主要用于从数据源中读取只读 的数据集,其常用于检索大量数据。 ■ADO.NET数据阅读器 ·不能实例化 SqlCommand sqlCmd=new SqlCommand(sltStr,sqlCon); SqlDataReader reader=sqlCmd.ExecuteReader0;∥获取数据 5
5 DataReader ▪ 对象是一个简单的数据集,主要用于从数据源中读取只读 的数据集,其常用于检索大量数据。 ▪ ADO.NET 数据阅读器 ▪ 不能实例化 SqlCommand sqlCmd = new SqlCommand(sltStr, sqlCon); SqlDataReader reader = sqlCmd.ExecuteReader(); // 获取数据
常用的属性 属性 说明 FieldCount 获得当前行的列数 HasRows 获得一个表示数据阅读器包含一行还是多行值 IsClosed 获得数据阅读器是否关闭的值 RecordsAffected 获得执行一个批命令后修改的行数 6
6 常用的属性 属性 说明 FieldCount 获得当前行的列数 HasRows 获得一个表示数据阅读器包含一行还是多行值 IsClosed 获得数据阅读器是否关闭的值 RecordsAffected 获得执行一个批命令后修改的行数
在listview控件中显示数据 if(reader.HasRows ∥判断SqlDataReaderx对象中是否有数据 { while(reader.Read()) reader["Name"].ToString()); ListViewltem Iv new ListViewltem(reader[0].ToString());// Iv.Subltems.Add(reader[1].ToString());// Iv.Subltems.Add(reader[2].ToString())ll性别 Iv.Subltems.Add(reader[3].ToString());// Iv.Subltems.Add(reader[4].ToString());// Iv.Subltems.Add(reader[].ToString())l出生日期 Iv.Subltems.Add(reader[.ToString());l年龄 listView1.Items.Add(Iv);
7 在listview控件中显示数据 if ( reader.HasRows ) // 判断SqlDataReader对象中是否有数据 { while ( reader.Read() ) { ListViewItem lv = new ListViewItem(reader[0].ToString());//学号 lv.SubItems.Add( reader[1].ToString());//姓名 lv.SubItems.Add(reader[2].ToString());//性别 lv.SubItems.Add(reader[3].ToString());//籍贯 lv.SubItems.Add(reader[4].ToString());//年级 lv.SubItems.Add(reader[5].ToString());//出生日期 lv.SubItems.Add(reader[6].ToString());//年龄 listView1.Items.Add(lv); } } reader[“Name”].ToString());
常用的SQL命令-更新 更新 update表名set列名=值where搜索条件 string strsql="update JBQK set Name='李四' where No='201101'"; 根据出生日期来更新年龄 update JBQK set Age=DATEDIFF(yyyy,BirthDay,getDate()) 8
8 常用的SQL命令-更新 ▪ 更新 ◼ update 表名 set 列名=值 where 搜索条件 ◼ string strsql = "update JBQK set Name='李四' where No='201101' "; ◼ 根据出生日期来更新年龄 update JBQK set Age=DATEDIFF(yyyy, BirthDay, getDate() )
string strCon =@"Data Source =.Initial Catalog TestDB;Integrated Security True;";string strsql ="update JBQK set Age=DATEDIFF(yyyy,BirthDay,getDate())"; SqlConnection sqlConn new SqlConnection(strCon);try sqlConn.Open(); ∥打开连接 SqlCommand cmd; if(sqlConn.State==ConnectionState.Open) cmd new SqlCommand(strsql,sqlConn); cmd.ExecuteNonQuery(); MessageBox.Show("更新成功"); } } catch(Exception ex) MessageBox.Show(ex.Message); 9
9 string strCon =@"Data Source = .; Initial Catalog = TestDB; Integrated 修改数据 Security = True;";string strsql = "update JBQK set Age=DATEDIFF(yyyy,BirthDay,getDate() ) "; SqlConnection sqlConn = new SqlConnection(strCon); try { sqlConn.Open(); // 打开连接 SqlCommand cmd; if (sqlConn.State == ConnectionState.Open) { cmd = new SqlCommand(strsql, sqlConn); cmd.ExecuteNonQuery(); MessageBox.Show("更新成功"); } } catch (Exception ex) { MessageBox.Show(ex.Message); }
图片的保存 以流的形式实现图片文件的保存 string strConn ="Server=.;DataBase=TestDB;Integrated Security=true"; SqlConnection connection new SqlConnection(strConn); string no=listView1.Selectedltems[0].Subltems[0].Text; string sql ="update JBQK set Pic=@Pic where No=no"; SqlCommand command new SqlCommand(sql,connection); 10
10 图片的保存 ▪ 以流的形式实现图片文件的保存 string strConn = "Server=.;DataBase=TestDB;Integrated Security=true"; SqlConnection connection = new SqlConnection(strConn); string no = listView1.SelectedItems[0].SubItems[0].Text; string sql = "update JBQK set Pic=@Pic where No=no"; SqlCommand command = new SqlCommand(sql, connection);