用Visual C#中轻松浏览数据库记录
点击次数:17 次 发布日期:2008-11-26 14:42:12 作者:源代码网
|
源代码网推荐 源代码网推荐 一、 程序的主要功能介绍: 源代码网推荐 程序打开本地Acess数据库(sample.mdb)中的book数据表,然后把book数据表中的 源代码网推荐 字段绑定到程序提供的文本框中,显示出来。通过程序中的四个按钮"首记录"、"尾记录"、"上一条"、"下一条",实现对book数据表中的记录浏览。程序的运行界面如下: 源代码网推荐 源代码网推荐 图01:对数据表中记录浏览程序的运行界面 源代码网推荐 源代码网推荐 二、程序设计和运行的环境设置: 源代码网推荐 (1)视窗2000服务器版 源代码网推荐 (2)Microsoft Acess Data Component 2.6 ( MADC 2.6 ) 源代码网推荐 源代码网推荐 三、程序设计难点和应该注意的问题: 源代码网推荐 (1)如何实现把数据表中的字段用文本框来显示: 源代码网推荐 如果直接把字段的值赋值给文本框,这时如果用"下一条"等按钮来浏览数据记录的时候,文本框的值是不会变化的。如何让文本框根据数据表中的记录指针来动态的显示要字段值,这是本文的一个重点,也是一个难点。 源代码网推荐 本文是通过把数据表中的字段值绑定到文本框的"Text"属性上,来实现动态显示字段数值的。实现这种处理要用到文本框的DataBindings属性和其中的Add方法。具体语法如下: 源代码网推荐 文本组件名称.DataBindings.Add ( "Text" , DataSet对象 , 数据表和字段名称 ) ; 源代码网推荐 在程序具体如下: 源代码网推荐 t_bookid.DataBindings.Add ( "Text" , myDataSet , "books.bookid" ) ; 源代码网推荐 源代码网推荐 这样就可以根据记录指针来实现要显示的字段值了。 源代码网推荐 (2)如何改变记录指针: 源代码网推荐 只有掌握如何改变记录指针,才可以随心所欲的浏览记录。Visual C#改变记录指针是通过一个命叫BindingManagerBase对象来实现的。此对象封装在名称空间System.Windows.Froms中。BindingManagerBase对象是一个抽象的对象,管理所有绑定的同类的数据源和数据成员。在程序设计中主要用到BindingManagerBase对象中的二个属性,即:Position属性和Count属性。第一个属性是记录了数据集的当前指针,后一个属性是当前数据集中的记录总数。由此可以得到改变记录指针的四个按钮对应的程序代码: 源代码网推荐 i>.首记录: 源代码网推荐 myBind.Position = 0 ; 源代码网推荐 ii>.尾记录: 源代码网推荐 myBind.Position = myBind.Count - 1 ; 源代码网推荐 iii>.下一条记录和操作后运行界面: 源代码网推荐 if ( myBind.Position == myBind.Count -1 ) 源代码网推荐 MessageBox.Show ( "已经到了最后一条记录!" ) ; 源代码网推荐 else 源代码网推荐 myBind.Position += 1 ; 源代码网推荐 源代码网推荐 iV>.上一条记录和操作后运行界面: 源代码网推荐 if ( myBind.Position == 0 ) 源代码网推荐 MessageBox.Show ( "已经到了第一条记录!" ) ; 源代码网推荐 else 源代码网推荐 myBind.Position -= 1 ; 源代码网推荐 源代码网推荐 源代码网推荐 四.程序源代码: 源代码网推荐 using System ; 源代码网推荐 using System.Drawing ; 源代码网推荐 using System.ComponentModel ; 源代码网推荐 using System.Windows.Forms ; 源代码网推荐 using System.Data.OleDb ; 源代码网推荐 using System.Data ; 源代码网推荐 源代码网推荐 public class DataView : Form { 源代码网推荐 private System.ComponentModel.Container components ; 源代码网推荐 private Button lastrec ; 源代码网推荐 private Button nextrec ; 源代码网推荐 private Button previousrec ; 源代码网推荐 private Button firstrec ; 源代码网推荐 private TextBox t_books ; 源代码网推荐 private TextBox t_bookprice ; 源代码网推荐 private TextBox t_bookauthor ; 源代码网推荐 private TextBox t_booktitle ; 源代码网推荐 private TextBox t_bookid ; 源代码网推荐 private Label l_books ; 源代码网推荐 private Label l_bookprice ; 源代码网推荐 private Label l_bookauthor ; 源代码网推荐 private Label l_booktitle ; 源代码网推荐 private Label l_bookid ; 源代码网推荐 private Label label1 ; 源代码网推荐 private System.Data.DataSet myDataSet ; 源代码网推荐 private BindingManagerBase myBind ; 源代码网推荐 源代码网推荐 public DataView ( ) 源代码网推荐 { 源代码网推荐 //连接到一个数据库 源代码网推荐 GetConnected ( ) ; 源代码网推荐 // 对窗体中所需要的内容进行初始化 源代码网推荐 InitializeComponent ( ); 源代码网推荐 } 源代码网推荐 public override void Dispose ( ) { 源代码网推荐 base.Dispose ( ) ; 源代码网推荐 components.Dispose ( ) ; 源代码网推荐 } 源代码网推荐 public static void Main ( ) { 源代码网推荐 Application.Run ( new DataView ( ) ) ; 源代码网推荐 } 源代码网推荐 public void GetConnected ( ) 源代码网推荐 { 源代码网推荐 try{ 源代码网推荐 //创建一个 OleDbConnection 源代码网推荐 string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = sample.mdb" ; 源代码网推荐 OleDbConnection myConn = new OleDbConnection ( strCon ) ; 源代码网推荐 string strCom = " SELECT * FROM books " ; 源代码网推荐 //创建一个 DataSet 源代码网推荐 myDataSet = new DataSet ( ) ; 源代码网推荐 源代码网推荐 myConn.Open ( ) ; 源代码网推荐 //用 OleDbDataAdapter 得到一个数据集 源代码网推荐 OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ; 源代码网推荐 //把Dataset绑定books数据表 源代码网推荐 myCommand.Fill ( myDataSet , "books" ) ; 源代码网推荐 //关闭此OleDbConnection 源代码网推荐 myConn.Close ( ) ; 源代码网推荐 } 源代码网推荐 catch ( Exception e ) 源代码网推荐 { 源代码网推荐 MessageBox.Show ( "连接错误! " + e.ToString ( ) , "错误" ) ; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 private void InitializeComponent ( ) 源代码网推荐 { 源代码网推荐 this.components = new System.ComponentModel.Container ( ) ; 源代码网推荐 this.t_bookid = new TextBox ( ) ; 源代码网推荐 this.nextrec = new Button ( ) ; 源代码网推荐 this.lastrec = new Button ( ) ; 源代码网推荐 this.l_bookid = new Label ( ) ; 源代码网推荐 this.t_books = new TextBox ( ) ; 源代码网推荐 this.t_booktitle = new TextBox ( ) ; 源代码网推荐 this.t_bookprice = new TextBox ( ) ; 源代码网推荐 this.firstrec = new Button ( ) ; 源代码网推荐 this.l_booktitle = new Label ( ) ; 源代码网推荐 this.l_bookprice = new Label ( ) ; 源代码网推荐 this.l_books = new Label ( ) ; 源代码网推荐 this.previousrec = new Button ( ) ; 源代码网推荐 this.l_bookauthor = new Label ( ) ; 源代码网推荐 this.t_bookauthor = new TextBox ( ) ; 源代码网推荐 this.label1 = new Label ( ) ; 源代码网推荐 源代码网推荐 //以下是对数据浏览的四个按钮进行初始化 源代码网推荐 firstrec.Location = new System.Drawing.Point ( 55 , 312 ) ; 源代码网推荐 firstrec.ForeColor = System.Drawing.Color.Black ; 源代码网推荐 firstrec.Size = new System.Drawing.Size ( 40 , 24 ) ; 源代码网推荐 firstrec.TabIndex = 5 ; 源代码网推荐 firstrec.Font = new System.Drawing.Font("仿宋", 8f ); 源代码网推荐 firstrec.Text = "首记录"; 源代码网推荐 firstrec.Click += new System.EventHandler(GoFirst); 源代码网推荐 previousrec.Location = new System.Drawing.Point ( 125 , 312 ) ; 源代码网推荐 previousrec.ForeColor = System.Drawing.Color.Black ; 源代码网推荐 previousrec.Size = new System.Drawing.Size(40, 24) ; 源代码网推荐 previousrec.TabIndex = 6 ; 源代码网推荐 previousrec.Font = new System.Drawing.Font ( "仿宋" , 8f ) ; 源代码网推荐 previousrec.Text = "上一条" ; 源代码网推荐 previousrec.Click += new System.EventHandler ( GoPrevious ) ; 源代码网推荐 nextrec.Location = new System.Drawing.Point ( 195 , 312 ); 源代码网推荐 nextrec.ForeColor = System.Drawing.Color.Black ; 源代码网推荐 nextrec.Size = new System.Drawing.Size ( 40 , 24 ) ; 源代码网推荐 nextrec.TabIndex = 7 ; 源代码网推荐 nextrec.Font = new System.Drawing.Font ( "仿宋" , 8f ) ; 源代码网推荐 nextrec.Text = "下一条" ; 源代码网推荐 nextrec.Click += new System.EventHandler ( GoNext ); 源代码网推荐 源代码网推荐 lastrec.Location = new System.Drawing.Point ( 265 , 312 ) ; 源代码网推荐 lastrec.ForeColor = System.Drawing.Color.Black ; 源代码网推荐 lastrec.Size = new System.Drawing.Size ( 40 , 24 ) ; 源代码网推荐 lastrec.TabIndex = 8 ; 源代码网推荐 lastrec.Font = new System.Drawing.Font ( "仿宋" , 8f ) ; 源代码网推荐 lastrec.Text = "尾记录" ; 源代码网推荐 lastrec.Click += new System.EventHandler ( GoLast ) ; 源代码网推荐 //以下是对为显示数据记录而设定的标签和文本框进行初始化,并把记录绑定在不同的绑定到文本框"Text"属性上 源代码网推荐 t_bookid.Location = new System.Drawing.Point ( 184 , 56 ) ; 源代码网推荐 t_bookid.TabIndex = 9 ; 源代码网推荐 t_bookid.Size = new System.Drawing.Size ( 80 , 20 ) ; 源代码网推荐 t_bookid.DataBindings.Add ( "Text" , myDataSet , "books.bookid" ) ; 源代码网推荐 源代码网推荐 t_books.Location = new System.Drawing.Point ( 184 , 264 ) ; 源代码网推荐 t_books.TabIndex = 10 ; 源代码网推荐 t_books.Size = new System.Drawing.Size ( 80 , 20 ) ; 源代码网推荐 t_books.DataBindings.Add ( "Text" , myDataSet , "books.bookstock" ) ; 源代码网推荐 源代码网推荐 t_booktitle.Location = new System.Drawing.Point ( 184 , 108 ) ; 源代码网推荐 t_booktitle.TabIndex = 11 ; 源代码网推荐 t_booktitle.Size = new System.Drawing.Size ( 176 , 20 ) ; 源代码网推荐 t_booktitle.DataBindings.Add( "Text" , myDataSet , "books.booktitle" ) ; 源代码网推荐 源代码网推荐 t_bookprice.Location = new System.Drawing.Point ( 184 , 212 ) ; 源代码网推荐 t_bookprice.TabIndex = 12 ; 源代码网推荐 t_bookprice.Size = new System.Drawing.Size ( 80 , 20 ) ; 源代码网推荐 t_bookprice.DataBindings.Add ( "Text" , myDataSet , "books.bookprice" ) ; 源代码网推荐 源代码网推荐 t_bookauthor.Location = new System.Drawing.Point ( 184 , 160 ) ; 源代码网推荐 t_bookauthor.TabIndex = 18 ; 源代码网推荐 t_bookauthor.Size = new System.Drawing.Size ( 128 , 20 ) ; 源代码网推荐 t_bookauthor.DataBindings.Add ( "Text" , myDataSet , "books.bookauthor" ) ; 源代码网推荐 l_bookid.Location = new System.Drawing.Point ( 24 , 56 ) ; 源代码网推荐 l_bookid.Text = "书本序号:" ; 源代码网推荐 l_bookid.Size = new System.Drawing.Size ( 112, 20 ) ; 源代码网推荐 l_bookid.Font = new System.Drawing.Font ( "仿宋" , 10f ) ; 源代码网推荐 l_bookid.TabIndex = 13 ; 源代码网推荐 l_bookid.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; 源代码网推荐 l_booktitle.Location = new System.Drawing.Point ( 24 , 108 ) ; 源代码网推荐 l_booktitle.Text = "书 名:"; 源代码网推荐 l_booktitle.Size = new System.Drawing.Size ( 112 , 20 ) ; 源代码网推荐 l_booktitle.Font = new System.Drawing.Font ( "仿宋" , 10f ) ; 源代码网推荐 l_booktitle.TabIndex = 14 ; 源代码网推荐 l_booktitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; 源代码网推荐 源代码网推荐 l_bookprice.Location = new System.Drawing.Point ( 24 , 212 ) ; 源代码网推荐 l_bookprice.Text = "价 格:" ; 源代码网推荐 l_bookprice.Size = new System.Drawing.Size ( 112 , 20 ) ; 源代码网推荐 l_bookprice.Font = new System.Drawing.Font ( "仿宋" , 10f ) ; 源代码网推荐 l_bookprice.TabIndex = 15 ; 源代码网推荐 l_bookprice.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; 源代码网推荐 源代码网推荐 l_books.Location = new System.Drawing.Point ( 24 , 264 ) ; 源代码网推荐 l_books.Text = "书 架 号:" ; 源代码网推荐 l_books.Size = new System.Drawing.Size ( 112 , 20 ) ; 源代码网推荐 l_books.Font = new System.Drawing.Font ( "仿宋" , 10f ) ; 源代码网推荐 l_books.TabIndex = 16 ; 源代码网推荐 l_books.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; 源代码网推荐 源代码网推荐 l_bookauthor.Location = new System.Drawing.Point ( 24 , 160 ) ; 源代码网推荐 l_bookauthor.Text = "作 者:" ; 源代码网推荐 l_bookauthor.Size = new System.Drawing.Size ( 112 , 20 ) ; 源代码网推荐 l_bookauthor.Font = new System.Drawing.Font ( "仿宋" , 10f ) ; 源代码网推荐 l_bookauthor.TabIndex = 17 ; 源代码网推荐 l_bookauthor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; 源代码网推荐 源代码网推荐 label1.Location = new System.Drawing.Point ( 49 , 8 ) ; 源代码网推荐 label1.Text = "浏览书籍信息" ; 源代码网推荐 label1.Size = new System.Drawing.Size ( 296 , 24 ) ; 源代码网推荐 label1.ForeColor = System.Drawing.Color.Green ; 源代码网推荐 label1.Font = new System.Drawing.Font ( "仿宋" , 15f ) ; 源代码网推荐 label1.TabIndex = 19 ; 源代码网推荐 //对窗体进行设定 源代码网推荐 this.Text = "用C#做浏览数据库中记录的程序!"; 源代码网推荐 this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ; 源代码网推荐 this.FormBorderStyle = FormBorderStyle.FixedSingle ; 源代码网推荐 this.ClientSize = new System.Drawing.Size ( 394 , 375 ) ; 源代码网推荐 //在窗体中加入组件 源代码网推荐 this.Controls.Add ( lastrec ) ; 源代码网推荐 this.Controls.Add ( nextrec ) ; 源代码网推荐 this.Controls.Add ( previousrec ) ; 源代码网推荐 this.Controls.Add ( firstrec ) ; 源代码网推荐 this.Controls.Add ( t_books ) ; 源代码网推荐 this.Controls.Add ( t_bookprice ) ; 源代码网推荐 this.Controls.Add ( t_bookauthor ) ; 源代码网推荐 this.Controls.Add ( t_booktitle ) ; 源代码网推荐 this.Controls.Add ( t_bookid ) ; 源代码网推荐 this.Controls.Add ( l_books ) ; 源代码网推荐 this.Controls.Add ( l_bookprice ) ; 源代码网推荐 this.Controls.Add ( l_bookauthor ) ; 源代码网推荐 this.Controls.Add ( l_booktitle ) ; 源代码网推荐 this.Controls.Add ( l_bookid ) ; 源代码网推荐 this.Controls.Add ( label1 ) ; 源代码网推荐 //把对象DataSet和"books"数据表绑定到此myBind对象 源代码网推荐 myBind= this.BindingContext [ myDataSet , "books" ] ; 源代码网推荐 } 源代码网推荐 //按钮"尾记录"对象事件程序 源代码网推荐 protected void GoLast ( object sender , System.EventArgs e ) 源代码网推荐 { 源代码网推荐 myBind.Position = myBind.Count - 1 ; 源代码网推荐 } 源代码网推荐 源代码网推荐 //按钮"下一条"对象事件程序 源代码网推荐 protected void GoNext ( object sender , System.EventArgs e ) 源代码网推荐 { 源代码网推荐 if ( myBind.Position == myBind.Count -1 ) 源代码网推荐 MessageBox.Show ( "已经到了最后一条记录!" ) ; 源代码网推荐 else 源代码网推荐 myBind.Position += 1 ; 源代码网推荐 } 源代码网推荐 //按钮"上一条"对象事件程序 源代码网推荐 protected void GoPrevious ( object sender , System.EventArgs e ) 源代码网推荐 { 源代码网推荐 if ( myBind.Position == 0 ) 源代码网推荐 MessageBox.Show ( "已经到了第一条记录!" ) ; 源代码网推荐 else 源代码网推荐 myBind.Position -= 1 ; 源代码网推荐 } 源代码网推荐 //按钮"首记录"对象事件程序 源代码网推荐 protected void GoFirst ( object sender , System.EventArgs e ) 源代码网推荐 { 源代码网推荐 myBind.Position = 0 ; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 五.总结: 源代码网推荐 本文的重点就在于如何用Visual C#改变数据集的记录指针和如何让文本框根据记录指针的变化而改变显示内容。虽然此类处理在Visual C#比起用其他语言要显得麻烦些。但对于程序设计人员却更灵活了,使得程序设计人员有了更大的发展空间。 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
