二 连接SQL 数据库doc.docx

上传人:b****4 文档编号:24210047 上传时间:2023-05-25 格式:DOCX 页数:24 大小:24.48KB
下载 相关 举报
二 连接SQL 数据库doc.docx_第1页
第1页 / 共24页
二 连接SQL 数据库doc.docx_第2页
第2页 / 共24页
二 连接SQL 数据库doc.docx_第3页
第3页 / 共24页
二 连接SQL 数据库doc.docx_第4页
第4页 / 共24页
二 连接SQL 数据库doc.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

二 连接SQL 数据库doc.docx

《二 连接SQL 数据库doc.docx》由会员分享,可在线阅读,更多相关《二 连接SQL 数据库doc.docx(24页珍藏版)》请在冰豆网上搜索。

二 连接SQL 数据库doc.docx

二连接SQL数据库doc

二连接SQL2005数据库

老程序员学C#

(二)--连接SQL2005数据库

将上面的按钮控件名字改成hellword,然后我们再新建一个按钮,名称改为"SQLdatabase",下来我们就开始建立最简单的数据库连接测试。

首先确认数据库是否连接正确:

打开SQLServer2005ManagementExpress,会弹出窗口要求连接,如图:

选择连接即可,在打开的数据库中建立一个新的数据库"testDB",创建一个表"danwei",具体如图:

(其中danweiID部分,设置数据类型的时候,我们希望自动递增,则设置选择INT型后,设置"列属性",选"标识规范"--(是标识)---选"是","标识增量"和"标识种子"均设置为"1",表示每次增加一个)

下来我们从VisualStudio2008中,测试是否能够连接数据库。

我们使用比较可靠的数据控件来测试。

打开--视图--服务器资源管理器--数据库,右键点击"数据库"--"添加连接…",打开添加连接对话框,选择服务器名,如果下拉列表中没有建立的数据库服务器,那么手工添加数据库服务器名称(拷贝打开SQL2005Express,如果已经打开了,右键点服务器名称,选择"连接",然后拷贝服务器名,到添加连接对话框进行粘贴即可)。

然后在"选择或输入一个数据库名"下拉框里选择刚刚我们建立的数据库"textDB"。

点击"测试连接"。

如果SQL服务器端设置没有问题,就会显示"测试连接成功"。

如果弹出不允许远程访问,则请回到本文第一部分,查看配置SQL2005远程访问的方法。

如果测试连接成功,我们下来就可以使用工具栏里的"BindingSource"控件来绑定数据源,并用DataGridView来显示数据了。

这个的过程很简单,添加控件了,在属性框里选择DataSource的值为我们刚建的连接就可以了。

当然,老程序员肯定是不愿意这么操作数据了,他需要更大的灵活性,于是准备来测试使用什么样的代码来连接和操作数据。

现在创建的数据库中手工添加记录值如图:

在"helloworld"程序中进行测试,创建一个label3,一个按钮button2,分别把文本属性设置如下图:

要使用SQL操作语句,就必须引用SQL类库。

所以在代码文件上面,添加如下:

usingSystem.Data.SqlClient;//添加引用

双击button2,写入代码如下:

privatevoidbutton2_Click(objectsender,EventArgse)

{

//定义数据库连接字符

stringstr_con=@"DataSource=26-3B72903E783B\SQLEXPRESS;IntegratedSecurity=SSPI;InitialCatalog=testDB;";

//定义SQL语句字符串

stringsql="select*fromdanwei";

//定义并实例化数据库连接类型变量

SqlConnectionconn=newSqlConnection(str_con);

//打开数据库连接

conn.Open();

//打开数据库连接

SqlCommandcomm=newSqlCommand(sql,conn);

//SqlDataAdapterda=newSqlDataAdapter(comm);

//da.SelectCommand=newSqlCommand(sql,conn);

//DataSetds=newDataSet();

//da.Fill(ds,"danwei");

//执行读操作

SqlDataReaderobjSqlReader=comm.ExecuteReader();

//打开数据库连接

while(objSqlReader.Read())

{

//将数据库中读取的值赋值给label3label3.Text=objSqlReader.GetValue

(1).ToString();

}

objSqlReader.Close();

}

每一句的代码都作了说明。

在实现功能的同时,要注意到我注释掉的四行代码。

运行后,label3会显示数据库值"中国"。

理解起来很简单吧。

读取数据库的步骤一般为:

定义连接字符串---打开数据库连接--执行查询操作--将查询出来的值赋值给显示控件。

其实现在已经可以很灵活的操作数据库了,老程序员可以很顺手的插入与删除、修改数据库值了。

不过对于新手,老程序员还是想将这几个类说的详细点。

SqlConnection类:

表示SQLServer数据库的一个打开的连接。

即对数据库进行连接操作的类。

SqlCommand类:

表示要对SQLServer数据库执行的一个Transact-SQL语句或存储过程。

也就是用它的实例来执行对数据库的一些操作,比如读、写等操作。

SqlDataReader类:

提供一种从SQLServer数据库读取行的只进流的方式。

就是一个读取数据库行的集合。

一般上面三个类就可以完成对数据库的操作了。

不过这里注释掉的语句里面还要介绍几个相关类。

SqlDataAdapter类表示用于填充DataSet和更新SQLServer数据库的一组数据命令和一个数据库连接。

这个就厉害了。

详细说说。

SqlDataAdapter是DataSet和SQLServer之间的桥接器,用于检索和保存数据。

MSDN这样说的:

SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射Fill(它可更改DataSet中的数据以匹配数据源中的数据)和Update(它可更改数据源中的数据以匹配DataSet中的数据)来提供这一桥接。

更新是逐行进行的。

对于每个已插入、修改和删除的行,Update方法会确定已对其执行的更改的类型(Insert、Update或Delete)。

根据更改类型,执行Insert、Update或Delete命令模板将已修改的行传播给数据源。

当SqlDataAdapter填充DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。

但是,除非MissingSchemaAction属性设置为AddWithKey,否则这个隐式创建的架构中不包括主键信息。

也可以使用FillSchema,让SqlDataAdapter创建DataSet的架构,并在用数据填充它之前就将主键信息包括进去。

有关更多信息,请参见向数据集添加现有约束(ADO.NET)。

通俗的说就是,SqlDataAdapter的Fill语句可以将数据源(即连接的数据库)中的数据填充到DataSet类型数据结构的数据变量里面去,即更新了DataSet;而Update语句相反,是将DataSet变量里面的数据填充到数据源(即数据库)中去。

"SqlDataAdapter与SqlConnection和SqlCommand一起使用,以便在连接到SQLServer数据库时提高性能。

"

这里新人要问:

SqlDataReader和SqlDataAdapter与上面两个数据库操作类(SqlConnection和SqlCommand)联系又什么区别呢?

我认为,SqlDataReader只是得到了行数据,而SqlDataAdapter操作所得到的是一个整表,包括列和行的数据和结构。

实用点说,就是SqlDataAdapter可以使用Cell(行,列的方式来检索数据。

SqlDataAdapter还包括SelectCommand、InsertCommand、DeleteCommand、UpdateCommand和TableMappings属性,以便于数据的加载和更新。

DataSet又是什么呢?

DataSet表示数据在内存中的缓存。

它用来指向从数据库中检索到的数据在内存中缓存的位置,包含多个DataTable对象。

简单点说,就是一个数据表的集合(数据集),这些数据集合就是你用SQL语句查询到的数据组成的。

这里可以实施数据完整性检查。

好了,现在说说SqlDataAdapter与SqlConnection和SqlCommand,以及DataSet之间是怎么调用数据库的。

privatevoidbutton2_Click(objectsender,EventArgse)

{

//定义数据库连接字符

stringstr_con=@"DataSource=26-3B72903E783B\SQLEXPRESS;IntegratedSecurity=SSPI;InitialCatalog=testDB;";

//定义SQL语句字符串

stringsql="select*fromdanwei";

//定义并实例化数据库连接类型变量

SqlConnectionconn=newSqlConnection(str_con);

//打开数据库连接

conn.Open();

//使用命令类来执行SQL语句,获取结果

SqlCommandcomm=newSqlCommand(sql,conn);

//创建数据适配器实例

SqlDataAdapterda=newSqlDataAdapter(comm);

//实例化数据集变量

DataSetds=newDataSet();

//将刚刚获取的数据填充到数据集实例里面

da.Fill(ds,"danwei");

//这个时候,ds变量里面是一个完整的数据结果表,所以使用下列语句只能看到表的第二列的列头

label3.Text=ds.Tables[0].Columns[0].ToString();

//关闭连接

conn.Close();

}

结果显示如下:

要想显示说有的数据,可以使用DataGridView。

窗口中添加一个DataGridView控件(在左边的工具栏里拖出来即可)。

添加代码如下:

privatevoidbutton2_Click(objectsender,EventArgse)

{

label3.Text=ds.Tables[0].Columns[0].ToString();

//接上面的代码,设置DataGridView控件的数据源为数据集变量,设置数据成员,帮定表名。

dataGridView1.DataSource=ds;

dataGridView1.DataMember="danwei";

}

运行后,就会显示如下:

添加、删除、修改数据库的操作,此时可以只改变SQL语句,就可以实现。

例如:

添加stringSql=string.Format("insertintodanwei(danwei)values('{0}')",textBox1.Text);

删除stringSql=string.Format("insertintodanwei(danwei)values('{0}')",textBox1.Text);

修改stringSql=string.Format("updatedanweisetdanwei=('{0}')",textBox1.Text);

该总结了,数据库的基础知识就是这样了。

以上基本上已经满足了可以操作数据库的方法,而且数据形式也比较丰富,有字段,有表。

赋值语句和显示语句已经都写得很明白了。

基本上写个学生管理系统,算是基本胜任了。

当然这是单文档进行一次数据库操作的尝试,如果是写系统程序,那么就应该把数据库连接和部分操作部分分离成一个单独的类文件。

老程序员当然知道了。

不过为了让新手也能快速的开发系统。

这里举个系统登陆的小例子吧。

附表:

几种常用数据库的连接字符串:

SQLServerODBC

标准连接

Driver={SQLServer};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接

Driver={SQLServer};Server=myServerAddress;Database=myDataBase;Trusted_Connection=Yes;

指定帐号和密码

oConn.Properties("Prompt")=adPromptAlwaysDriver={SQLServer};Server=myServerAddress;Database=myDataBase;

OLEDB,OleDbConnection(.NET)

标准连接

Provider=sqloledb;DataSource=myServerAddress;InitialCatalog=myDataBase;UserId=myUsername;Password=myPassword;

受信的连接

Provider=sqloledb;DataSource=myServerAddress;InitialCatalog=myDataBase;IntegratedSecurity=SSPI;使用serverName\instanceName作为数据源可以指定SQLServer实例。

连接到一个SQLServer的实例

指定服务器实例的表达式和其他SQLServer的连接字符串相同。

Provider=sqloledb;DataSource=myServerName\theInstanceName;InitialCatalog=myDataBase;IntegratedSecurity=SSPI;

指定帐户和密码

oConn.Provider="sqloledb"oConn.Properties("Prompt")=adPromptAlwaysDataSource=myServerAddress;InitialCatalog=myDataBase;

使用IP地址的连接

Provider=sqloledb;DataSource=190.190.200.100,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=myDataBase;UserID=myUsername;Password=myPassword;

SqlConnection(.NET)

标准连接

DataSource=myServerAddress;InitialCatalog=myDataBase;UserId=myUsername;Password=myPassword;

StandardSecurityalternativesyntaxServer=myServerAddress;Database=myDataBase;UserID=myUsername;Password=myPassword;Trusted_Connection=False;

受信任的连接

DataSource=myServerAddress;InitialCatalog=myDataBase;IntegratedSecurity=SSPI;

TrustedConnectionalternativesyntaxServer=myServerAddress;Database=myDataBase;Trusted_Connection=True;

连接到SQLServer实例

指定服务器实例的表达式和其他SQLServer的连接字符串相同。

Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;

仅能用于CE设备。

DataSource=myServerAddress;InitialCatalog=myDataBase;IntegratedSecurity=SSPI;UserID=myDomain\myUsername;Password=myPassword;

带有IP地址的连接

DataSource=190.190.200.100,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=myDataBase;UserID=myUsername;Password=myPassword;

指定包的大小

Server=myServerAddress;Database=myDataBase;UserID=myUsername;Password=myPassword;Trusted_Connection=False;PacketSize=4096;默认的包大小为8192字节。

DataShapeMSDataShapeProvider=MSDataShape;DataProvider=SQLOLEDB;DataSource=myServerAddress;InitialCatalog=myDataBase;UserID=myUsername;Password=myPassword;

SQLServer2005SQLNativeClientODBCDriver

标准安全连接

Driver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接

Driver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;

"IntegratedSecurity=SSPI"与"Trusted_Connection=yes"是相同的。

连接到一个SQLServer实例

指定服务器实例的表达式和其他SQLServer的连接字符串相同。

Driver={SQLNativeClient};Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=yes;

oConn.Properties("Prompt")=adPromptAlwaysDriver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;

使用MARS(multipleactiveresultsets)

Driver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MARS_Connection=yes;

"MultipleActiveResultSets=true"与MARS_Connection=yes"是相同的。

使用ADO.NET2.0作为MARS的模块。

MARSADO.NET1.0和ADO.NET1.1。

验证网络数据

Driver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;

使用附加本地数据库文件的方式连接到本地SQLServerExpress实例

Driver={SQLNativeClient};Server=.\SQLExpress;AttachDbFilename=c:

\asd\qwe\mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;为何要使用Database参数?

如果同名的数据库已经被附加,那么SQLServer将不会重新附加。

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQLServerExpress实例

Driver={SQLNativeClient};Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;为何要使用Database参数?

如果同名的数据库已经被附加,那么SQLServer将不会重新附加。

数据库镜像

DataSource=myServerAddress;FailoverPartner=myMirrorServer;InitialCatalog=myDataBase;IntegratedSecurity=True;

SQLNativeClientOLEDBProvider

标准连接

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

受信的连接

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;

连接到SQLServer实例

指定服务器实例的表达式和其他SQLServer的连接字符串相同。

Provider=SQLNCLI;Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=yes;

使用帐号和密码

oConn.Properties("Prompt")=adPromptAlwaysoConn.Open"Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;

使用MARS(multipleactiveresultsets)

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MarsConn=yes;

"MultipleActiveResultSets=true"和"MARS_Connection=yes"是相同的。

使用ADO.NET2.0作为MARS的模块。

MARSADO.NET1.0和ADO.NET1.1。

验证网络数据

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;

使用附加本地数据库文件的方式连接到本地SQLServerExpress实例

Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=c:

\asd\qwe\mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;

使用附加本地数据文件夹中的数据库文件的方式连接到本地SQLServerExpress实例

Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;

数据库镜像

DataSou

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1