C#调用SQLWord格式.docx
《C#调用SQLWord格式.docx》由会员分享,可在线阅读,更多相关《C#调用SQLWord格式.docx(27页珍藏版)》请在冰豆网上搜索。
项目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属性判断数据库的连接状态。
效果图如下:
关键步骤如下:
在窗体中添加一个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;
SqlConnectionconn=newSqlConnection(ConStr);
conn.Open();
if(conn.State==ConnectionState.Open)
label2.Text="
数据库【"
】已经连接并打开"
catch
连接数据库失败"
3.关闭连接:
方法一:
调用sqlconection对象的close方法关闭一个连接(但可用open方法再打开)。
方法二:
用dispose方法关闭,并且清理连接所占用的资源(此时不可再用open打开,必须再次重新初始化连接再打开)。
主要步骤:
新建一个窗体,在窗体中添加一个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=="
请输入数据库名称"
stringstr="
conn=newSqlConnection(str);
连接成功"
catch(Exceptionex)
MessageBox.Show(ex.Message);
textBox1.Text="
privatevoidbutton2_Click(objectsender,EventArgse)
conn.Close();
if(conn.State==ConnectionState.Closed)
str="
使用Close方法关闭数据库已经成功关闭\n"
str+="
使用Close方法关闭连接并重新调用Open方法连接数据库数据库已经成功打开\n"
richTextBox1.Text=str;
richTextBox1.Text=ex.Message;
privatevoidbutton3_Click(objectsender,EventArgse)
conn.Dispose();
richTextBox1.Text+="
\n使用dispose方法关闭连接并立即调用Open方法连接数据库数据库不成功!
!
\n"
}
二.执行sql语句对象:
command对象
用于对数据源执行命令
1.command对象概述:
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//返回结果集中第一行的第一列或空引用
关键代码如下:
namespaceTest04
conn=newSqlConnection("
database=db_15;
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
//指定使用conn连接数据库
cmd.CommandText="
updatetb_commandset奖金=奖金+1where性别='
男'
cmd.CommandType=CommandType.Text;
inti=Convert.ToInt32(cmd.ExecuteNonQuery());
共有"
+i.ToString()+"
名男员工获得奖金"
updatetb_commandset奖金=奖金+2where性别='
女'
intj=Convert.ToInt32(cmd.ExecuteNonQuery());
label3.Text="
+j.ToString()+"
名女员工获得奖金"
代码如下:
namespaceTest05
select*fromtb_command"
//只执行sql语句的文本形式
SqlDataReadersdr=cmd.ExecuteReader();
//定义数据读取器对象,并不修改数据
while(sdr.Read())
listView1.Items.Add(sdr[1].ToString());
//button1.Enabled=false;
二.读取数据对象:
datareader对象
从数据源中读取数据流,相较DataSet数据集而言,是一个简易的数据集。
namespaceTest06
//连接数据库
//SqlConnectionconn=newSqlConnection("
SqlConnectionconn=newSqlConnection("
database=temp;
//打开数据库
//创建sqlcommand对象,以便使用sql语句,并指定用conn对象连接
SqlCommandcmd=newSqlCommand("
select*from"
+textBox1.Text.Trim(),conn);
//使用ExecuteReader()方法创建SqlDataReadersdr以便快速读数据
//调用read方法读取SqlDataReader
sdr.Read();
//通过SqlDataReader对象的hasrows方法判断查询结果
if(sdr.HasRows)
数据表中有值"
数据表中没有任何数据"
}
sdr.Close();
四.数据适配器对象:
Dataadapter对象
虽然,可以使用Command对象和DataReader对象完成所乎所有的数据库功能,但需要手工编写大量代码,因此,提供了更方便的方法来支持可视化的开发,这就是dataadapter和dataset对象提供的重要功能,其中dataset可以认为是内存中的数据库,而dataadapter可以看成是数据源与dataset之间的桥梁。
1.通过dataadapter对象的fill方法填充数据集dataset.
namespaceTest07
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