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#开发可以可视化操作的windows服务

使用C#开发自定义windows服务是一件十分简单的事。那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一直执行我们开发的某些程序的时候。这里我以一个WCF的监听服务为...

access数据库使用水晶报表(PUSH)推模式实现多数据源含子报表的订单打印

最近改造一个小型购物网站,要求使用水晶报表实现订单打印,本人对水晶报表从一无所知到,到最终弄出来整整花了一夜的时间,特此记录下此文和大家共享。 关于水晶报表更详细的介绍建议大家可以参考阿泰的博客:h...

C#创建水晶报表(ODBC连接Mysql)

  • 2016年01月24日 14:57
  • 111KB
  • 下载

C# 水晶报表教程

水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的...

c#水晶报表教程

水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2005的...

C#简单水晶报表打印步骤

1.创建项目Print   2.主界面添加一个按钮,和水晶报表预览控件 3.右击资源管理器,添加一个数据集   3.按步骤添加自己的数据库到数据集中   4.添加完毕,再右击...

ASP.NET C#学习三(水晶报表插件)

概念部分 (1). 什么是报表? 用表格、图表等来展示动态的数据。报表=多言的格式+动态的数据 (2). 什么是水晶报表(Crystal Reports)? 是AP.NET的一系列报表应用组件。 ...

我的学习笔记(在C#里用MVC实现水晶报表)

1.建立dataset (ds)     2.在ds里面建立数据集         3.建立水晶报表         4.选择刚刚的数据集   5.设计报表  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#连接access数据库,涉及水晶报表
举报原因:
原因补充:

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