实战Visual C#数据库编程之五(转)
五.插入数据记录: 和前面二种操作在思路是一致的,就是通过ADO.NET首先插入数据记录到数据库,然后对"DataSet"对象进行必要的修改。下列代码就是以Access 2000数据库为模型插入一条数据记录的代码 protected void Insert_record ( object sender , System.EventArgs e ) { try { file://判断所有字段是否添完,添完则执行,反之弹出提示 if ( t_id.Text != "" && t_xm.Text != "" && t_xb.Text != "" && t_nl.Text != "" && t_books.Text != &
实战Visual C#数据库编程之六(转)
六.Visual C#数据库编程的完成源代码和程序运行的主界面: 掌握了上面要点,编写一个完整的数据库编程的程序就显得非常容易了,下面是Visual C#进行数据库编程的完整代码(Data01.cs),此代码是以Access 2000数据库为模型设计的,具体如下:using System ;using System.Drawing ;using System.ComponentModel ;using System.Windows.Forms ;using System.Data.OleDb ;using System.Data ;public class Data : Form {private System.ComponentModel.Container components = null ;private Button lastrec ;private Button nextrec
实战Visual C#数据库编程之三(转)
三.实现删除记录: 在对数据记录进行操作的时候,有二点必须十分清晰: 其一:在对数据记录进行操作的时候,我想有一些程序员一定有这样一个疑惑,当对数据库服务器请求数据集的时候,就会产生"DataSet"对象,用以管理数据集,这样如果这些对数据库服务器的请求非常多,同样也就会产生很多的"DataSet"对象,达到一定时候必然会使得数据库服务器崩溃。这种想法是自然的,但和实际并不相符,因为"DataSet"对象并不是在服务器端产生的,而是在客户端产生的。所以面对众多的数据请求的时候对数据库服务
实战Visual C#数据库编程之四(转)
四.插入数据记录: 对数据库进行插入记录操作和删除记录操作基本的思路是一致的,就是通过ADO.NET首先插入数据记录到数据库,然后对"DataSet"对象进行必要的修改。下列代码就是以Access 2000数据库为模型修改当前记录的代码: protected void Update_record ( object sender , System.EventArgs e ) { int i = myBind.Position ; try{ file://连接到一个数据库 string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb " ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; m
实战Visual C#数据库编程之二(转)
二.如何浏览数据: 在《Visual C#的数据绑定》中,已经了解了如何把数据集中的某些字段绑定到WinForm组件的某个属性上,这样程序员就可以根据以WinForm组件的来定制数据显示的形式,并且此时的WinForm组件显示内容就可以随着记录指针的变化而改变。至此可见,浏览数据记录的关键就是如何改变记录指针。要实现这种操作,就要使用到BindingManagerBase类,此类的主要作用是管理对于那些实现了对同一个数据源进行绑定的对象。说的具体些,就是能够使得Windows窗体上的已经对同一数据源进行数据绑定的组件保持同步。在BindingManage
实战Visual C#数据库编程之一(转)
[编者的话:]关于数据库编程,微软提供了一个统一的数据对象访问模型,在Visual Studio6.0中称为ADO,在.NET中则统一为ADO.NET,掌握ADO.NET就等于掌握了数据库编程的核心,因此有必要首先复习一下以前发表的《ADO.NET完全攻略》。 针对数据库编程始终是程序设计语言的一个重要方面的内容,也是一个难点。数据库编程的内容十分丰富,但最为基本编程的也就是那么几点,譬如:连接数据库、得到需要的数据和针对数据记录的浏览、删除、修改、插入等操作。其中又以后面针对数据记录的数据操作为重点。本文就来着重探讨一下Visual C#数据
Visual C#中的数据绑定之五(转)
五. 复杂型组件的数据绑定: 在上面的介绍中,了解到对复杂型组件的数据绑定是通过设定组件的某些属性来完成数据绑定的。首先来介绍一下ComboBox组件的数据绑定. (1).ComboBox组件的数据绑定: 在得到数据集后,只有设定好ComboBox组件的的三个属性就可以完成数据绑定了,这三个属性是:、"DisplayMember"、"ValueMember"。其中"DataSource"是要显示的数据集,"DisplayMember"是ComboBox组件显示的字段,"ValueMember"是实际使用值。具体如下:ComboBox1.DataSource = myD
Visual C#中的数据绑定之四(转)
(2).Label组件的数据绑定: 在掌握了TextBox组件数据绑定以后,可以十分方便的得到Label组件的数据绑定方法,因为这二者实现的方法实在是太相似了。下列语句是把得到数据集的"xm"字段绑定到Label组件的"Text"属性上: label1.DataBindings.Add ( "Text" , myDataSet , "person.xm" ) ; 注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。由此可以得到Label组件数据绑定的源程序代码(Label01.cs),本代码操作数据库是Access 2000: public class Form1
Visual C#中的数据绑定之三(转)
四.简单型组件的数据绑定: (1).TextBox组件的数据绑定: 通过下列语句就可以把数据集(即为:myDataSet)的某个字段绑定到TextBox组件的"Text"属性上面了: textBox1.DataBindings.Add ( "Text" , myDataSet , "person.xm" ) ; 注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。 由此可以得到绑定TextBox组件的源程序代码(TextBox01.cs),下列代码操作的数据库是Access 2000,如下: public class Form1 : Form { private TextBox textBox1 ; priv
Visual C#中的数据绑定之一(转)
我们知道在由于Visual C#自身没有类库,和其他的.Net开发语言一样,Visual C#调用的类库是.Net框架中的一个共有的类库--.Net FrameWork SDK。ADO.NET是.Net FrameWork SDK提供给.Net开发语言进行数据库开发的一个系列类库的集合。在ADO.NET中虽然提供了大量的用于数据库连接、数据处理的类库,但却没有提供类似DbText组件、DbList组件、DbLable组件、DbCombox组件等。要想把数据记录以ComBox、ListBox等形式显示处理,使用数据绑定技术是最为方便、最为直接的方法。所谓数据绑定技术就是把已经打开的数据集中某个或者某些字段绑定到组件
Visual C#中的数据绑定之二(转)
(1). 连接Access 2000,得到DataSet: //创建一个 OleDbConnection string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; string strCom = " SELECT * FROM person " ; file://创建一个 DataSet myDataSet = new DataSet ( ) ; myConn.Open ( ) ; file://用 OleDbDataAdapter 得到一个数据集 OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ; file://把Dataset绑定person数据表 myCommand.Fill (
用Visual C#来修改和删除数据库记录(转)
在以前的一篇文章《Visual C#中轻松浏览数据库记录》中,我们介绍了用Visual C#如何把数据表中的字段值绑定到文本框的属性上和如何操作数据记录指针,随意浏览数据表中的记录。本文就接着上一篇的内容,来介绍用Visual C#如何来修改和删除数据记录。 一.程序设计和运行的环境设置: (1).视窗2000服务器版 (2).Microsoft Access Data Component 2.6 以上版本 ( MADC 2.6 ) (3).本文程序使用的数据库的介绍: 为了方便起见,在选用数据库方面选用了本地数据库Access 2000,当然你也可以选用其他类型的数据库,只需要更改文章后面的程
用Visual C#来增加数据记录(转)
在本篇文章中,我们将介绍Visual C#对数据库的一个基本操作,即:如何往数据库中添加记录。我们将通过一些数据库操作的例子,来具体说明一下。为了更清楚的说明这个问题,在选用数据库方面采用了二种当前比较典型的数据库,其一是本地数据库--Access 2000,另外一个是远程数据库--SQL SERVER 7.0。首先介绍如何用Visual C#来添加Access 2000数据库的记录。 一.用Visual C#来添加Access 2000数据库的记录 (一).程序设计和运行的环境设置: (1)视窗2000服务器版 (2)Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 ) (3)本
使用C#编写扩展存储过程(转)
什么是扩展存储过程?扩展存储过程使您得以使用象 C 这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。可将参数传递给扩展存储过程,扩展存储过程可返回结果,也可返回状态。扩展存储过程可用于扩展 Microsoft® SQL Server™ 2000 的功能。扩展存储过程是 SQL Server 可以动态装载并执行的动态链接库 (DLL)。扩展存储过程直接在 SQL Server 的地址空间运行,并使用 SQL Server 开放式数据服务 (ODS) API 编程。编写好扩展存储过程后,固定服务器角色 sysadmin 的成员即可在
用C#访问Access数据库(转)
我编写这个程序的动机是当我希望用c sharp访问MSAccess数据库的时候我没有办法获得任何信息和参考材料.网上所能获得的所有材料都是偏重于SQL的,所以我们将分两步来编写这个应用程序,第一我们将展示如何连接到MSAccess数据库然后看看它有多复杂.最后,我们就这样完成了这个程序. 闲言少序,让我们开始正题.连接到数据库的过程与我们早先的ADO连接过程相比已经发生了较大的变化.下面的图表恰当的(我希望如此)OleDbConnection--> OleDbCommand --> OleDbDataReader.现在那些熟悉ado的人很明显能看出两者的相似之处但是为了使那些还没有
c#中使用nunit支持数据库单元测试(转)
首先添加引用,在.net组件中加入System.Enterprise Services.测试程序源代码:using System;using NUnit.Framework;using System.EnterpriseServices;namespace TransactionTesting{[TestFixture][Transaction(TransactionOption.Required)]public class DatabaseFixture:ServicedComponent {[TearDown] public void TransactionTearDown() { if(ContextUtil.IsInTransaction) { ContextUtil.SetAbort(); } } }}使用C:Program FilesMicrosoft Visual Studio .NET 2003S
在C#中使用ADO.Net部件来访问Access数据库(转)
数据库的访问是所有编程语言中最重要的部分,C#提供了ADO.Net部件用于对数据库进行访问。我们将从最简单易用的微软Access数据库入手讨论在C#中对数据库的访问。 C#中的Connection对象和Command对象与Access类似,但在这里我们还将使用其另一个与RecordSet类似的被称作ADODataReader的对象,它负责处理与查询有关的RecordSet对象。 首先,必须使用微软的Access创建一个数据库。运行Access,创建一个数据库,但不要创建任何表(我们将在下面的程序中创建表。),保存创建的数据库。 打开控制面板中的ODBC图标,点击System DNS标签,依
八皇后问题的C#解答(转)
改编自V星[视窗王子]应答程序,如下: using System;class Queen{const int SIZE = 8;//皇后数public static void Main(){int[] Queen = new int [SIZE];//每行皇后的位置int y,x,i,j,d,t=0;y = 0;Queen[0] = -1;while( true ){for (x=Queen[y]+1; x<SIZE; x++){for (i=0;i<y;i++){j = Queen[i];d = y-i;//检查新皇后是否与以前的皇后能相互攻击if ((j==x)||(j==x-d)||(j==x+d))break;}if (i>=y)break;//不攻击}if (x == SIZE) //没有合适的位置{if (0==y){//回朔到了第一行Console.WriteLine("Done");break; //结束}/
C# 2.0新特性探究之模拟泛型和内置算法(转)
在C#2.0中,匿名方法、IEnumerable接口和匿名方法的合作,使很多的编程任务变得非常的简单,而且写出来的程序非常的优美。 比如,我们可以写出如下的代码: List<Book> thelib = Library.getbooks(); List<Book> found = thelib.FindAll(delegate(Book curbook) { if (curbook.isbn.StartsWith("...")) return true; return false; }); foreach (Book b in found) Console.WriteLine(b.isbn); 这段程序非常简单的展示给我们需要查找的信息,代码也非常的直接易懂。内置的数据结构给了我们强大的算法
对C#泛型中的new()约束的一点思考(转)
对于new()约束,大家可能有一个误解,以为使用了new约束之后,在创建对象时与非泛型的版本是一致的: public class Tester<T> where T:new() { public Tester() { t = new T();//等同于非泛型版本的new? 例如 object o = new object();? } private T t; } 事实上,使用new关键字的作用只是让编译器在泛型实例化之处,检查所绑定的泛型参数是否具有无参构造函数: Tester<SomeType> t = new Tester<SomeType>(); //此处编译器会检查SomeType是否具有无参构造函数。若没有则会有compile error。 而Tester<T&