C#连接access数据库,涉及水晶报表

原创 2006年06月06日 00:23:00

最近要做的一个人使用的软件中涉及到水晶报表。初步决定用c#连接access数据库。在数据库的连接中遇到一些问题。如果是单独的数据库连接是没有什么太大的问题的,可是,用到水晶报表,感觉问题就来了,有时候都不明白是什么原因。比如,我连接sqlserver的时候,明明连接的字符串里面已经有用户名和密码的了,可是,还是会问我用户名和密码,当我把正确的输入进去以后,还是告诉我用户名和密码错误。在csdn的论坛里面搜索了,知道一个解决方案,可是,自己很懒惰,也不想去试,况且,感觉这不是跟数据库连接的问题,感觉水晶报表怪怪的。

现在决定用c#和access做了。今天晚上试了一下,没有出现用sqlserver的时候出现的问题了。想想,其实access虽然也许很多方面比不上sqlserver,可是,至少用户电脑里面不用装sqlserver了,这是一个好的地方。

下面首先讲讲c#连接access数据库,然后讲讲c#,access数据库,水晶报表。

首先是c#和access数据库相连,很简单,直接给代码好了,这里只涉绝对路径,而相对路径有些问题。

方法一:使用OleDbDataReader 来读取数据,有些限制

//连接access数据库
   //1.绝对路径连接
 OleDbConnection dbconn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=G:/水晶报表/tryArea/a.mdb");
   dbconn.Open();

   //操作数据
   OleDbCommand cmd=dbconn.CreateCommand();
   cmd.CommandText="select * from book";
   cmd.CommandType=CommandType.Text;
   OleDbDataReader reader=cmd.ExecuteReader();

   //读取数据的方法
   //首先要读一行,然后才能把这一行的数据显示出来
   reader.Read();
   textBox1.Text=reader.GetString(1);

//   while(reader.Read())
//   {
//           textBox1.Text=reader.GetString(1);
//   }
            //关闭reader
   reader.Close();

//关闭数据库的连接
   dbconn.Close();


方法二:使用dataset来读取数据,比较方便灵活

//用绝对路径连接数据库,然后用dataset把数据读出来
   //
   //1.绝对路径连接
   OleDbConnection dbconn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=G:/水晶报表/tryArea/a.mdb");
   dbconn.Open();


   //操作数据,用dataset
   OleDbDataAdapter da=new OleDbDataAdapter("select * from book",dbconn);

   DataSet ds=new DataSet();
   da.Fill(ds);

   textBox1.Text=ds.Tables[0].Rows[0]["bookname"].ToString();


   //关闭数据库的连接
   dbconn.Close();

 

下面讲讲,水晶报表,C#,access

1).cs页面中的代码并不难,如下


   //使用水晶报表
   //
   //1.绝对路径连接
   OleDbConnection dbconn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=G:/水晶报表/tryArea/a.mdb");
   dbconn.Open();
   //操作数据,用dataset
   OleDbDataAdapter da=new OleDbDataAdapter("select * from book",dbconn);

   Dataset1 ds=new Dataset1();//这里的Dataset是前面自己定义的数据集
   da.Fill(ds,"book");//一定要写明是放到哪个table中,否则数据根本不会读到自己定义的数据集中,why?

   //da.Fill(ds);//如果这样写,根本就得不到数据,虽然不知道是为什么会这样,可是,对dataset1,却确实是这样的
   textBox1.Text=ds.Tables[0].Rows[0][0].ToString();
   
   CrystalReport1 oRtp=null;//对应自己定义的报表.rpt的名字
   oRtp=new CrystalReport1();

   oRtp.SetDataSource(ds);//在代码页面中,把报表跟数据集关联起来,在报表中还有一处设置的地方

   crystalReportViewer1.ReportSource=oRtp;//相当于设置一个报表控件上面显示的是哪个报表


   //关闭数据库的连接
   dbconn.Close();

2)添加数据集dataset,在解决方案资源管理器中点击右键,添加新项,添加数据集。在.xsd页面中,从服务器资源管理器中的数据连接中点右键,添加连接,选择新的连接为Microsoft.Jet.4.0 OLE DB Provider。这时会让选择数据库,等等。

3)添加水晶报表页面,在解决方案资源管理器中点击右键,添加新项,添加水晶报表。在.rpt页面中,能设置报表具体的样子,关键还是要把报表跟特定的数据集关联起来。由于前面已经新建了一个数据集,就要把这个水晶报表跟这个数据集关联起来。

4)在解决方案资源管理器中的引用一项,点右键添加新的引用CrystalDecisions.CrystalReports.Engine

5).cs页面中添加

using CrystalDecisions.CrystalReports.Engine;

//连接access需要的
using System.Data.OleDb;

呵呵,这样就可以了,不过,水晶报表页面的设计不那么容易,我现在还没有怎么学会。

另外跟数据库连接用相对路径会好些,现在也不行。

[转]C#连接access数据库,涉及水晶报表

最近要做的一个人使用的软件中涉及到水晶报表。初步决定用c#连接access数据库。在数据库的连接中遇到一些问题。如果是单独的数据库连接是没有什么太大的问题的,可是,用到水晶报表,感觉问题就来了,有时候...
  • roofwei
  • roofwei
  • 2009年06月20日 20:26
  • 2613

C#连接ACCESS数据库的详细步骤!

一、建立FORM窗体,加一个按钮控件,加一个DATAGRIDVIEW控件。 二、双击FORM,加入命名空间using System.Data.OleDb;        双击按钮,进入按钮代码,写...
  • qingfeng45697
  • qingfeng45697
  • 2015年08月21日 15:21
  • 3321

在vb中动态加载水晶报表rpt文件的方法

     这个问题在很多论坛里边都有问到。但是一直没找到满意的答案。下边写出一个解决办法    Dim sql As String    Dim rstLiuShui As New ADODB.Rec...
  • hadelu
  • hadelu
  • 2005年01月30日 12:33
  • 1596

VS C# ADO.NET代码连接Access数据库

在Visual Studio2013 C#中以编程方式操作Access数据库,一般使用OleDb进行连接: 1.首先添加两个引用(使用using): using System.Data.OleDb; ...
  • c1481118216
  • c1481118216
  • 2016年05月31日 00:50
  • 3732

C#动态创建及连接ACCESS数据库的详细步骤

连接ACCESS数据库的详细步骤 一、建立FORM窗体,加一个按钮控件,加一个DATAGRIDVIEW控件。 二、双击FORM,加入命名空间using System.Data.OleDb;   ...
  • Goldxwang
  • Goldxwang
  • 2016年10月25日 08:36
  • 3234

C#连接带密码的Access数据库!...

//定义连接字符串             String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"+                       ...
  • friendan
  • friendan
  • 2012年03月19日 21:41
  • 1401

基于C#的Access数据库的界面登陆_初体验数据库

在学习C#一小段时间后,网上逛发现对于C#这类界面开发,如果要做一个好一点的应用,不用数据库基本上不可能了。以前懒得学,都是用文件方式存储,然后再程序初始化的时候读出,并沾沾自喜的说,其实这样甚至在不...
  • FrankArmageddon
  • FrankArmageddon
  • 2014年01月12日 20:48
  • 1859

Access数据库教程_如何进行C#连接Access数据库的细节操作?

许多学者总会面对于数据库的知识,以下的例子讲述到Access数据库说明,用C#的DataSet类访问数据库的一些操作方法。 操作涉及的主要C#类有: DataSet:对应数据库表的一个集合...
  • zhuqihe02
  • zhuqihe02
  • 2015年10月17日 09:47
  • 3453

C#中为水晶报表动态动态设置数据源

 之前在论坛中经常有人问起在VS2005中使用水晶报表(Crystal Report 10)如何用DataSet实现动态的数据源绑定?关于这个问题我研究了一下,找到了新的解决方案。    在以前VS2...
  • DonetRen
  • DonetRen
  • 2010年02月08日 10:21
  • 6766

用C#连接Access数据库做登录界面

平台:Win7 32位   VS2008    Access2007, 数据库有加密 1、界面布局       2、首先在vs的命名空间中引用Access库 us...
  • u011981242
  • u011981242
  • 2016年03月06日 22:55
  • 3333
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#连接access数据库,涉及水晶报表
举报原因:
原因补充:

(最多只允许输入30个字)