|
<p ><ccid_nobr>Visual C#是微软公司推出的新一代的程序设计语言,作为为.Net FrameWork度身设计的程序语言,Visual C#具有C++的强大功能和Visual Basic简洁使用的特点。在数据库的处理方面,Visual C#表现出了其强大的功能和较方便使用的特点,只用较简单的语句就可以完成比较复杂的数据处理。本文主要通过二个具体的程序例子来具体讲述Visual C#在数据库方面的应用。即如何用DbGrid显示数据。为了较全面的阐述问题,在选用数据库方面使用了比较典型的数据库,一个选用了本地数据库--Access 2000,另一个选用了远程数据库--Sql server7.0。<br/><br/><b>一. 程序设计及运行环境:</b><ol><li>微软视窗2000 专业版本<li>.Net FrameWork Beta 2<li>Microsoft Data Acess Component 2.6 ( MDAC2.6)</ol><b>二.程序设计的主要思路</b>:<ol><li>从Form类中继承得到一个Form1,Form类被封装在名称空间System.Windows.Forms中,并在Form1中从DataGrid类中继承继承一个dataGrid1。DataGrid类被封装在名称空间System.Data.Oledb中,由于此名称空间中封装了许多和数据处理相关的类,如:OleDbConnect类、OleDbDataAdapter类等,这些类在进行数据库中的数据处理时是经常用到的。<li>分别设定Form1和dataGrid1的属性。<li>把dataGrid1加入到Form1中,显示出来。<li>建立数据连接,打开数据库,返回数据集。<li>.把返回的数据集帮定到dataGrid1上,显示数据集。</ol><b>三.程序设计中的重要步骤</b>:<br/>以下的介绍中的选用的数据库是远程数据库--Sqlserver 7.0,下图是程序运行后的界面:<br/><div align="center"><img src="http://www.hh010.com/upload_files/article/244/9_vgpxms9891.gif"><br/>图01</div><br/>1.定义Form1,和DbGrid1。要定义这二个类,就必须导入这二个类所继承的名称空间。并分清二者的从属关系,具体实现语句如下:<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">using System ;<br/>using System.Windows.Forms ;<br/>using System.Data.OleDb ;<br/>namespace dbgrid<br/>{<br/>public class Form1 : Form // 继承一个Form类<br/>{<br/>private DataGrid dataGrid1 ; //继承一个DataGrid类<br/>……<br/>}<br/>}</td></tr></table><br/>从上面的一段程序可见,dataGrid1被定义为一个私有类型<br/>2. 分别设定Form1和dataGrid1的属性。设定这些属性主要是为了在屏幕上显示。这种设定可以根据设计者的自我感觉,以下是本程序中属性设定的语句,在下面的语句中用到了名称空间System.Drawing。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">// 以下设定dataGrid1的属性<br/>this.dataGrid1 = new DataGrid ( ) ;<br/>this.dataGrid1.DataMember = "";<br/>this.dataGrid1.Location = new Point( 8,16 ) ;<br/>this.dataGrid1.Name = "dataGrid1";<br/>this.dataGrid1.Size = new System.Drawing.Size( 272 , 232 ) ;<br/>this.dataGrid1.TabIndex = 0 ;<br/>// 以下设定From1的属性<br/>this.AutoScaleBaseSize = new System.Drawing.Size( 5 , 13 ) ;<br/>this.ClientSize = new System.Drawing.Size( 292 , 273 ) ;<br/>this.Name = "Form1" ;<br/>this.Text = "用DbGrid显示数据表内容";<br/></td></tr></table><br/> 3. 把dataGrid1加入到Form1中,显示出来。<br/>完成此项处理只有下面语句就可以了:<br/>this.Controls.Add ( this.dataGrid1 ) ;<br/>由于此时并没有在dataGrid1中帮定加入数据集,如果此时编译运行程序,则界面如下:<br/><div align="center"><img src="http://www.hh010.com/upload_files/article/244/9_gwnqsk9892.gif"><br/>图02</div><br/>但可见我们已经成功完成了在Form1中加入dataGrid1的工作了。<br/>4. 建立数据连接,打开数据库,返回数据集。<br/>要实现上面的工作,还需要导入另外二个名称空间:System.Data和System.Data.Oledb。这二个名称空间中封装了大部分用来数据处理的类。在本程序中要到了以下几个类:<br/>OleDbConnection类:建立和数据库的连接,主要是通过一段连接字符串,在此连接字符串中定义了和数据库连接的信息,然后通过一个OleDbConnection类提供的方法Open,建立和数据库的连接。<br/>OleDbDataAdapter类:提供了一些数据命令和数据连接,在下面帮定DataSet时使用。具体代码如下:<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">// 设定数据连接字符串,此字符串的意思是打开Sqlserver数据库,服务器名称为czdy1,数据库为gzgl<br/>string connString = " rovider = SQLOLEDB.1; Persist Security Info = False ; User ID= sa ; Initial Catalog = gzgl ; Data Source= czdy1 " ;<br/>// 创建一个新的OleDbConnection<br/>OleDbConnection myConnection = new OleDbConnection( ) ;<br/>myConnection.ConnectionString = connString;<br/>myConnection.Open ( ) ;<br/>// 创建一个 OleDbDataAdapter<br/>OleDbDataAdapter da = new OleDbDataAdapter( "Select * from klk" , myConnection) ;<br/></td></tr></table><br/>5. 把返回的数据集帮定到dataGrid1上,显示数据集。<br/>要帮定数据集到dataGrid1上,还需要使用到名称空间System.Data中一个类--DataSet。具体如何定义和使用他,见下列程序:<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">// 创建一个新的 dataset<br/>DataSet ds = new DataSet ( ) ;<br/>// fill dataset<br/>da.Fill ( ds ) ;// 把da中的数据集帮定到ds中<br/>dataGrid1.DataSource = ds.DefaultViewManager;<br/></td></tr></table><br/>如果已经正确的完成以上工作,在编译完成以后,你就可以图01。<br/> 6.关闭数据连接,关闭数据集<br/> 使用下列语句就可以完成了<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">myConnection.Close ( ) ;<br/>da.Dispose ( ) ;<br/></td></tr></table><br/><br/><b>四.第一个源程序(First.cs),打开远程数据库Sql server 7.0,并显示到DataGrid中</b>。<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">First.cs<br/>using System ;<br/>using System.Drawing ;<br/>using System.Windows.Forms ;<br/>using System.Data ;<br/>using System.Data.OleDb ;<br/>namespace dbgrid<br/>{<br/>public class Form1 : Form<br/>{<br/>private DataGrid dataGrid1 ;<br/>public Form1 ( )<br/>{<br/>// 以下设定dataGrid1的显示时候的属性<br/>this.dataGrid1 = new DataGrid ( ) ;<br/>this.dataGrid1.DataMember = "";<br/>this.dataGrid1.Location = new Point( 8,16 ) ;<br/>this.dataGrid1.Name = "dataGrid1";<br/>this.dataGrid1.Size = new System.Drawing.Size( 272 , 232 ) ;<br/>this.dataGrid1.TabIndex = 0 ;<br/>// 以下设定From1的某些属性<br/>this.AutoScaleBaseSize = new System.Drawing.Size( 5 , 13 ) ;<br/>this.ClientSize = new System.Drawing.Size( 292 , 273 ) ;<br/>// 把dataGrid1加入到Form1中,此时dataGrid1就显示出来<br/>this.Controls.Add ( this.dataGrid1 ) ;<br/><br/><br/>// 设定数据连接字符串,此字符串的意思是打开Sqlserver数据库,服务器名称为server1,数据库为data1<br/>string connString = " rovider = SQLOLEDB.1; Persist Security Info = False ; User ID= sa ; Initial Catalog = gzgl ; Data Source= czdy1 " ;<br/>// 创建一个新的OleDbConnection<br/>OleDbConnection myConnection = new OleDbConnection( ) ;<br/>myConnection.ConnectionString = connString;<br/>myConnection.Open ( ) ;<br/>// 创建一个 OleDbDataAdapter<br/>OleDbDataAdapter da = new OleDbDataAdapter( "Select * from klk" , myConnection) ;<br/>// 创建一个新的 dataset<br/>DataSet ds = new DataSet ( ) ;<br/>// fill dataset<br/>da.Fill ( ds ) ;// 把da中的数据集帮定到ds中<br/>dataGrid1.DataSource = ds.DefaultViewManager;<br/>myConnection.Close ( ) ;<br/>da.Dispose ( ) ;<br/>}<br/>static void Main ( )<br/>{<br/>Application.Run ( new Form1 ( ) ) ;<br/>}<br/><br/>}<br/>}<br/></td></tr></table><br/><b>五.第二个源程序(Second.cs),打开本地数据库--Acess 2000,并显示到DataGrid中</b>。<br/>打开Acess 2000数据库和打开Sql Server 7.0的主要区别在于数据连接的字符串不一样。Second.cs的源代码如下:<br/><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight="black" bordercolordark="#ffffff"><tr><td bgcolor="e6e6e6" class="code">using System ;<br/>using System.Drawing ;<br/>using System.Windows.Forms ;<br/>using System.Data ;<br/>using System.Data.OleDb ;<br/>namespace dbgrid<br/>{<br/>public class Form1 : Form<br/>{<br/>private DataGrid dataGrid1 ;<br/>public Form1 ( )<br/>{<br/>// 以下设定dataGrid1的显示时候的属性<br/>this.dataGrid1 = new DataGrid ( ) ;<br/>this.dataGrid1.DataMember = "";<br/>this.dataGrid1.Location = new Point( 8,16 ) ;<br/>this.dataGrid1.Name = "dataGrid1";<br/>this.dataGrid1.Size = new System.Drawing.Size( 272 , 232 ) ;<br/>this.dataGrid1.TabIndex = 0 ;<br/>// 以下设定From1的某些属性<br/>this.AutoScaleBaseSize = new System.Drawing.Size( 5 , 13 ) ;<br/>this.ClientSize = new System.Drawing.Size( 292 , 273 ) ;<br/>// 把dataGrid1加入到Form1中,此时dataGrid1就显示出来<br/>this.Controls.Add ( this.dataGrid1 ) ;<br/><br/>this.Name = "Form1" ;<br/>this.Text = "用DbGrid显示数据表内容";<br/>// 设定数据连接字符串,此字符串的意思是打开当前目录下的my.mdb数据库<br/>string connString = " rovider = Microsoft.Jet.OLEDB.4.0;Data Source = " + Application.StartupPath+ "\\my.MDB" ;<br/>// 创建一个新的OleDbConnection<br/>OleDbConnection myConnection = new OleDbConnection( ) ;<br/>myConnection.ConnectionString = connString;<br/>myConnection.Open ( ) ;<br/>// 创建一个 OleDbDataAdapter<br/>OleDbDataAdapter da = new OleDbDataAdapter( "Select * from Persons" , myConnection) ;<br/>// 创建一个新的 dataset<br/>DataSet ds = new DataSet ( ) ;<br/>// fill dataset<br/>da.Fill ( ds ) ;// 把da中的数据集帮定到ds中<br/>dataGrid1.DataSource = ds.DefaultViewManager;<br/>myConnection.Close ( ) ;<br/>da.Dispose ( ) ;<br/>}<br/>static void Main ( )<br/>{<br/>Application.Run ( new Form1 ( ) ) ;<br/>}<br/>}<br/>}<br/></td></tr></table><br/><b>六.总结</b><br/>如果你的机器已经达到了程序运行的要求,就请用以下语句来编译程序源代码,生成Exe文件:<br/>csc /t:winexe /r:system.dll /r:system.windows.forms.dllfirst.cs (或second.cs)。至此就完成了全部工作。<br/><br/>(责任编辑 <ccid_nobr>尤北</ccid_nobr><p ></ccid_nobr><p align="center"></p></p> |
|