C#调用SQL.docx
- 文档编号:29450965
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:33
- 大小:192.18KB
C#调用SQL.docx
《C#调用SQL.docx》由会员分享,可在线阅读,更多相关《C#调用SQL.docx(33页珍藏版)》请在冰豆网上搜索。
C#调用SQL
数据访问技术
目的:
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)创建数据库
选择“开始/程序/microsoftsqlserver/企业管理器”命令,打开企业管理器。
在企业管理器左侧栏目中的“数据库”项目上点右键,选择新建数据库命令。
,
在“数据库属性”窗口的“名称”文本框中输入新建数据库的名称,如下图
(2)删除数据库
在新建数据库上点鼠标右键,在弹出快捷菜单中选择“删除”命令
2.数据表的创建及删除,方法同上。
ADO.NET简介
A是一组可以公开数据访问服务的类,有丰富的组件和方法,用于支持对sqlserver和xml等数据源进行访问。
A对象模型由二个部分组成:
数据提供程序(dataprovider,也称为托管提供程序)和数据集(dataset),前者负责与物理数据源的连接,数据集代表实际的数据。
A支持二种访问数据的模型:
无连接模型-将数据下载到客户端机器上并将数据封装到内存中,然后可以像访问本地关系数据库一样访问内存中的数据(如dataset)
连接模型依赖于逐记录的访问,这种访问要求打开并保持与数据源的连接。
一.连接数据库对象:
connection对象
功能:
与特定数据源建立联系
1.connection对象概述:
首先,根据使用对象的不同,需引入不同的命名空间:
System.data.sqlclient命名空间
System.data.odbc命名空间;
System.data.oledb命名空间;
System.data.oracle命名空间;
然后,可根据引入命名空间的不同,调用相应的命名空间中的connection对象进行数据库连接。
例如,要连接sqlserver数据库,首先要通过usingSystem.data.sqlclient命今引用sqlserver数据提供程序,然后调用空间下的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
{
//stringConStr="server=.;database="+textBox1.Text.Trim()+";uid=sa;pwd=123456";
stringConStr="server=hmpc;database="+textBox1.Text.Trim()+";uid=sa;pwd=123456";
SqlConnectionconn=newSqlConnection(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方法打开连接。
关键代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespace用close和dispose方法关闭数据库连接
{
publicpartialclassForm1:
Form
{
SqlConnectionconn;
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox1.Text=="")
{
MessageBox.Show("请输入数据库名称");
}
else
{
try
{
stringstr="server=.;database="+textBox1.Text.Trim()+";uid=sa;pwd=123456";
conn=newSqlConnection(str);
conn.Open();
if(conn.State==ConnectionState.Open)
{
MessageBox.Show("连接成功");
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
textBox1.Text="";
}
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
try
{
stringstr="";
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(Exceptionex)
{
richTextBox1.Text=ex.Message;
}
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
try
{
conn.Dispose();
conn.Open();
}
catch(Exceptionex)
{
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:
用于向sqlserver数据库发送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方法返回受影响的行数
效果图如下:
关键代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceTest04
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
SqlConnectionconn;
privatevoidbutton1_Click(objectsender,EventArgse)
{
conn=newSqlConnection("server=.;database=db_15;uid=sa;pwd=123456");
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;//指定使用conn连接数据库
cmd.CommandText="updatetb_commandset奖金=奖金+1where性别='男'";
cmd.CommandType=CommandType.Text;
inti=Convert.ToInt32(cmd.ExecuteNonQuery());
label2.Text="共有"+i.ToString()+"名男员工获得奖金";
cmd.CommandText="updatetb_commandset奖金=奖金+2where性别='女'";
cmd.CommandType=CommandType.Text;
intj=Convert.ToInt32(cmd.ExecuteNonQuery());
label3.Text="共有"+j.ToString()+"名女员工获得奖金";
}
}
}
项目5创建一个windows应用程序,用sqlcommand的ExeuterReader方法返回一个包含数据的sqldatareader对象实例
效果图如下:
代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceTest05
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
SqlConnectionconn;
privatevoidbutton1_Click(objectsender,EventArgse)
{
conn=newSqlConnection("server=.;database=db_15;uid=sa;pwd=123456");
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="select*fromtb_command";
cmd.CommandType=CommandType.Text;//只执行sql语句的文本形式
SqlDataReadersdr=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是否包含一行或者多行,即判断查询结果是否有值。
效果图如下:
关键代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceTest06
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
//连接数据库
//SqlConnectionconn=newSqlConnection("server=.;database=db_15;uid=sa;pwd=123456");
SqlConnectionconn=newSqlConnection("server=.;database=temp;uid=sa;pwd=123456");
//打开数据库
conn.Open();
//创建sqlcommand对象,以便使用sql语句,并指定用conn对象连接
SqlCommandcmd=newSqlCommand("select*from"+textBox1.Text.Trim(),conn);
//使用ExecuteReader()方法创建SqlDataReadersdr以便快速读数据
SqlDataReadersdr=cmd.ExecuteReader();
//调用read方法读取SqlDataReader
sdr.Read();
//通过SqlDataReader对象的hasrows方法判断查询结果
if(sdr.HasRows)
{
MessageBox.Show("数据表中有值");
}
else
{
MessageBox.Show("数据表中没有任何数据");
}
sdr.Close();
}
catch(Exceptionex)
{
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控件的数据源,显示查询的数据。
效果图如下:
关键代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceTest07
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
SqlConnectionconn;
privatevoidbutton1_Click(objectsender,EventArgse)
{
conn=newSqlConnection("server=.;database=db_15;uid=sa;pwd=123456");
SqlCommandcmd=newSqlCommand("select*fromtb_command",conn);
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=cmd;//SelectCommand获取或设置用于在数据源中选择记录的命令。
DataSetds=newDataSet();//设置数据集对象
//sda.Fill(ds,"cs");
//通过dataadapter对象的fill方法填充数据集dataset
sda.Fill(ds);
//设置数据控件dataGridView1中的数据源
dataGridView1.DataSource=ds.Tables[0];
}
privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
{
}
}
}
2.通过dataadapter对象的Updata方法更新数据源
项目8创建一个windows应用程序,查询tb_command表中所有数据并显示在datagridv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 调用 SQL