收藏 分销(赏)

C#调用SQL.doc

上传人:仙人****88 文档编号:9283554 上传时间:2025-03-19 格式:DOC 页数:23 大小:316.50KB
下载 相关 举报
C#调用SQL.doc_第1页
第1页 / 共23页
C#调用SQL.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述
数据访问技术 目的: 1. 了解如何创建和删除数据库 2. 了解如何创建和删除数据表 3. 掌握连接数据库对象(Connection) 4. 掌握执行sql语句对象(Command) 5. 掌握读取数据对象(DataReader) 6. 掌握数据适配器对象(DataAdapter) 7. 掌握数据集对象(DataSet) 重点:技术 难点:综合编程 项目1 创建一个windows应用程序,用来显示数据库连接状况。 项目2 创建一个windows应用程序,分别用close和dispose方法关闭数据库连接。 项目4 创建一个windows应用程序,用sqlcommand的ExecuteNonQuery方法返回受影响的行数 项目5 创建一个windows应用程序,用sqlcommand的ExeuterReader方法返回一个包含数据的sqldatareader对象实例 项目6 创建一个windows应用程序,向窗体中添加一个textbox和button控件,分别用于输入要查询的表名以及执行查询操作,通过sqldatareader对象的hasrows属性进行判断sqldatareader是否包含一行或者多行,即判断查询结果是否有值。 项目7 创建一个windows应用程序,向窗体中添加一个button控件和一个datagridview控件,分别用于执行数据绑定以及显示数据表中的数据。当单击button后,先连接数据库,然后创建一个sqldataadapter对象,使用该对象的fill方法填充dataSet数据集,最后设置DataGridView控件的数据源,显示查询的数据。 项目8 创建一个windows应用程序,查询tb_command表中所有数据并显示在datagridview控件中,单击某条数据,会显示详细信息。当对某条数据进行修改后,单击“修改”按钮,使用DataAdapter对象的Updata方法更新数据库。 项目9 创建一个windows应用程序,向窗体添加一个datagridview控件,首先获取tb_test中的数据,并存储在dataset对象ds中,然后再获取数据表tb_main中的数据,存储在另一个dataset对象ds1中,最后调用dataset对象的merge方法,将ds与ds1合并。 项目10 创建一个windows应用程序,向窗体添加二个DataGridView控件和一个Button控件,第一个DataGridView控件用于数据表tb_test中的数据,当单击Button控件后,通过dataset对象的copy方法复制第一个DataGridView控件的dataset,并作为第二个DataGridView控件的数据源。 背景知识: 数据库 1数据库是按照数据结构来组织、存储和管理数据的仓库。是存储在一起的相关数据的集合。 2关系型数据库是由许多数据表组成,数据表由是由许多条记录组成,而记录又是由许多字段组成,每个字段又对应一个对象。 Sql语言简介 Sql是一种数据库查询和程序设计语言,是关系型数据库事实上的标准语言。 1数据库的创建与删除 (1) 创建数据库 选择“开始/程序/microsoft sql server/企业管理器”命令,打开企业管理器。 在企业管理器左侧栏目中的“数据库”项目上点右键,选择新建数据库命令。 , 在“数据库属性”窗口的“名称”文本框中输入新建数据库的名称,如下图 输入数据库名称!!! (2) 删除数据库 在新建数据库上点鼠标右键,在弹出快捷菜单中选择“删除”命令 2.数据表的创建及删除,方法同上。 ADO.NET简介 A 是一组可以公开数据访问服务的类,有丰富的组件和方法,用于支持对sql server 和xml等数据源进行访问。 A对象模型由二个部分组成:数据提供程序(data provider,也称为托管提供程序)和数据集(dataset),前者负责与物理数据源的连接,数据集代表实际的数据。 A支持二种访问数据的模型: 无连接模型-将数据下载到客户端机器上并将数据封装到内存中,然后可以像访问本地关系数据库一样访问内存中的数据(如dataset) 连接模型依赖于逐记录的访问,这种访问要求打开并保持与数据源的连接。 一. 连接数据库对象:connection对象 功能:与特定数据源建立联系 1. connection对象概述: 首先,根据使用对象的不同,需引入不同的命名空间: System.data.sqlclient命名空间 System.data.odbc命名空间; System.data.oledb命名空间; System.data.oracle命名空间; 然后,可根据引入命名空间的不同,调用相应的命名空间中的connection对象进行数据库连接。 例如,要连接sql server数据库,首先要通过using System.data.sqlclient命今引用sql server数据提供程序,然后调用空间下的sqlconnection类连接数据库. 2. 连接数据库: 先引入System.data.sqlclient命名空间,命名空间里有sqlconnection类,通过sqlconnection类的对象的open方法打开数据库。然后,用sqlconnection对象的state属性判断数据库的连接状态。 项目1 创建一个windows应用程序,用来显示数据库连接状况。 效果图如下: 关键步骤如下: 在窗体中添加一个textbox控件、一个button控件和二个label控件,分别用于输入要连接的数据库名称、执行连接数据库的操作以及数据库的连接状态,然后引入system.data.sqlclient命名空间,使用sqlconnection类连接数据库。 关键代码如下: if (textBox1.Text == "") { MessageBox.Show("请输入要连接的数据库名称"); } else { try { //string ConStr = "server=.;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123456"; string ConStr = "server=hmpc;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123456"; SqlConnection conn = new SqlConnection(ConStr); conn.Open(); if (conn.State == ConnectionState.Open) { label2.Text = "数据库【" + textBox1.Text.Trim() + "】已经连接并打开"; } } catch { MessageBox.Show("连接数据库失败"); } } 3. 关闭连接: 方法一:调用sqlconection对象的close方法关闭一个连接(但可用open方法再打开)。 方法二:用dispose方法关闭,并且清理连接所占用的资源(此时不可再用open打开,必须再次重新初始化连接再打开)。 项目2 创建一个windows应用程序,分别用close和dispose方法关闭数据库连接。 效果图如下: 主要步骤: 新建一个窗体,在窗体中添加一个textbox控件和一个richtextbox控件,分别用于输入连接的数据库名和显示连接信息及错误提示。再设置3个button控件,分别用于连接数据库、调用close方法关闭连接,再用open方法打开连接以及调用dispose方法关闭并释放连接,然后调用open方法打开连接。 关键代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 用close和dispose方法关闭数据库连接 { public partial class Form1 : Form { SqlConnection conn; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show("请输入数据库名称"); } else { try { string str = "server=.;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123456"; conn = new SqlConnection(str); conn.Open(); if (conn.State == ConnectionState.Open) { MessageBox.Show("连接成功"); } } catch (Exception ex) { MessageBox.Show(ex.Message); textBox1.Text = ""; } } } private void button2_Click(object sender, EventArgs e) { try { string str = ""; conn.Close(); if (conn.State == ConnectionState.Closed) { str = "使用Close方法关闭数据库已经成功关闭\n"; } conn.Open(); if (conn.State == ConnectionState.Open) { str += "使用Close方法关闭连接并重新调用Open方法连接数据库数据库已经成功打开\n"; } richTextBox1.Text = str; } catch (Exception ex) { richTextBox1.Text = ex.Message; } } private void button3_Click(object sender, EventArgs e) { try { conn.Dispose(); conn.Open(); } catch (Exception ex) { richTextBox1.Text = ex.Message; richTextBox1.Text += "\n使用dispose方法关闭连接并立即调用Open方法连接数据库数据库不成功!!\n"; } } } } 二.执行sql语句对象:command对象 功能:用于对数据源执行命令 1 .command对象概述: 首先,根据使用对象的不同,需引入不同的命名空间: System.data.sqlclient命名空间 System.data.odbc命名空间; System.data.oledb命名空间; System.data.oracle命名空间; 然后,可根据引入命名空间的不同,调用相应的命名空间中的connection对象进行数据库连接。 Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的sql语句。它主要有四种方式: (1) Sqlcommand:用于向sql server数据库发送sql语句,位于system.data.sqlclient命名空间下; (2) Oledbcommand:用于向oledb的数据库发送sql语句,如access和mysql数据库等都是oledb公开的数据库; (3) Odbccommand: 用于向odbc数据库发送sql语句 (4) Oraclecommand: 用于向oracle数据库发送sql语句 2.设置数据源类型: 详见 “3 设置数据源类型”项目 3. command有多种方法来执行sql语句,通过sqlcommand向数据库发送增、删、改等命令。常用的方法有 (1) ExecuteNonQuery //返回受影响的行数 (2) ExecuteReader //返回一个SqldataReader对象 (3) Executescalar //返回结果集中第一行的第一列或空引用 项目4 创建一个windows应用程序,用sqlcommand的ExecuteNonQuery方法返回受影响的行数 效果图如下: 关键代码如下: using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test04 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; private void button1_Click(object sender, EventArgs e) { conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=123456"); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;//指定使用conn连接数据库 cmd.CommandText = "update tb_command set 奖金=奖金+1 where 性别='男'"; cmd.CommandType = CommandType.Text; int i = Convert.ToInt32(cmd.ExecuteNonQuery()); label2.Text = "共有" + i.ToString() + "名男员工获得奖金"; cmd.CommandText = "update tb_command set 奖金=奖金+2 where 性别='女'"; cmd.CommandType = CommandType.Text; int j = Convert.ToInt32(cmd.ExecuteNonQuery()); label3.Text = "共有" + j.ToString() + "名女员工获得奖金"; } } } 项目5 创建一个windows应用程序,用sqlcommand的ExeuterReader方法返回一个包含数据的sqldatareader对象实例 效果图如下: 代码如下: using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test05 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; private void button1_Click(object sender, EventArgs e) { conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=123456"); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from tb_command"; cmd.CommandType = CommandType.Text;//只执行sql语句的文本形式 SqlDataReader sdr = cmd.ExecuteReader();//定义数据读取器对象,并不修改数据 while (sdr.Read()) { listView1.Items.Add(sdr[1].ToString()); } conn.Dispose(); //button1.Enabled = false; } } } 二. 读取数据对象:datareader对象 功能:从数据源中读取数据流,相较DataSet数据集而言,是一个简易的数据集。 项目6 创建一个windows应用程序,向窗体中添加一个textbox和button控件,分别用于输入要查询的表名以及执行查询操作,通过sqldatareader对象的hasrows属性进行判断sqldatareader是否包含一行或者多行,即判断查询结果是否有值。 效果图如下: 关键代码如下: using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test06 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { //连接数据库 //SqlConnection conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=123456"); SqlConnection conn = new SqlConnection("server=.;database=temp;uid=sa;pwd=123456"); //打开数据库 conn.Open(); //创建sqlcommand对象,以便使用sql语句,并指定用conn对象连接 SqlCommand cmd = new SqlCommand("select * from "+textBox1.Text.Trim(), conn); //使用ExecuteReader()方法创建SqlDataReader sdr以便快速读数据 SqlDataReader sdr = cmd.ExecuteReader(); //调用read方法读取SqlDataReader sdr.Read(); //通过SqlDataReader对象的hasrows方法判断查询结果 if (sdr.HasRows) { MessageBox.Show("数据表中有值"); } else { MessageBox.Show("数据表中没有任何数据"); } sdr.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } 四.数据适配器对象:Dataadapter对象 虽然,可以使用Command对象和DataReader对象完成所乎所有的数据库功能,但需要手工编写大量代码,因此,提供了更方便的方法来支持可视化的开发,这就是dataadapter和dataset对象提供的重要功能,其中dataset可以认为是内存中的数据库,而dataadapter可以看成是数据源与dataset之间的桥梁。 1. 通过dataadapter对象的fill方法填充数据集dataset. 项目7 创建一个windows应用程序,向窗体中添加一个button控件和一个datagridview控件,分别用于执行数据绑定以及显示数据表中的数据。当单击button后,先连接数据库,然后创建一个sqldataadapter对象,使用该对象的fill方法填充dataSet数据集,最后设置DataGridView控件的数据源,显示查询的数据。 效果图如下: 关键代码如下: using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test07 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; private void button1_Click(object sender, EventArgs e) { conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=123456"); SqlCommand cmd = new SqlCommand("select * from tb_command", conn); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmd;//SelectCommand 获取或设置用于在数据源中选择记录的命令。 DataSet ds = new DataSet();//设置数据集对象 //sda.Fill(ds, "cs"); //通过dataadapter对象的fill方法填充数据集dataset sda.Fill(ds); //设置数据控件dataGridView1中的数据源 dataGridView1.DataSource = ds.Tables[0]; } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } } } 2. 通过dataadapter对象的Updata方法更新数据源 项目8 创建一个windows应用程序,查询tb_command表中所有数据并显示在datagridview控件中,单击某条数据,会显示详细信息。当对某条数据进行修改后,单击“修改”按钮,使用DataAdapter对象的Updata方法更新数据库。 设计界面如下: 效果图如下: 关键代码如下: using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test08 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection conn; DataSet ds; SqlDataAdapter sda; private void Form1_Load(object sender, EventArgs e) { //实例化SqlConnection对象conn,连接数据库 conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=123456"); //创建SqlCommand对象cmd,以便使用数据库 SqlCommand cmd = new SqlCommand("select * from tb_command", conn); //实例化数据适配器SqlDataAdapter对象sda,以建立数据源与setdata间的联系 sda = new SqlDataAdapter(); //设置数据适配器SqlDataAdapter对象sda的属性 sda.SelectCommand = cmd; //创建数据集对象ds并向内存中的数据集填充数据 ds = new DataSet(); sda.Fill(ds, "cs"); //设置datagridview1控件的数据源,以便在控件中显示数据表 dataGridView1.DataSource = ds.Tables[0]; } private void button1_Click(object sender, EventArgs e) { //DataTable dt = ds.Tables["cs"];//创建一个数据表eables DataTable dt = ds.Tables[0];//创建一个数据表eables //利用数据适配器对象sda的方法FillSchema,把表结构加载到tb_command中 sda.FillSchema(dt, SchemaType.Mapped); //创建一个datarow行数据对象, DataRow dr = dt.Rows.Find(txtNo.Text); //设置datarow中的值 dr["姓名"] = txtName.Text.Trim(); dr["性别"] = this.txtSex.Text.Trim(); dr["年龄"] = this.txtAge.Text.Trim(); dr["奖金"] = this.txtJJ.Text.Trim(); //自动生成一个表单 SqlCommandBuilder cmdbuider = new SqlCommandBuilder(sda); //调用updata方法将datatable更新到数据库中 sda.Update(dt); } //在ataGridView控件的CellClick(单击单元格)事件中所要执行的代码 //可以实现某条记录的详细信息显示 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { txtNo.Text = dataGridView1.SelectedCells[0].Value.ToString();//编号后面的第一个textbox,已改名为txtNo txtName.Text = dataGridView1.SelectedCells[1].Value.ToString(); txtSex.Text = dataGridView1.SelectedCells[2].Value.ToString(); txtAge.Text = dataGridView1.SelectedCells[3].Value.ToString(); txtJJ.Text = dataGridView1.SelectedCells[4].Value.ToString(); } } } 四.数据集对象:dataset对象 Dataset对象,就像存入于内在中的一个小型数据库。它
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服