1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > c#水晶报表连接mysql_C# 用vs连接SQL数据库做动态水晶报表

c#水晶报表连接mysql_C# 用vs连接SQL数据库做动态水晶报表

时间:2023-06-10 17:30:18

相关推荐

c#水晶报表连接mysql_C# 用vs连接SQL数据库做动态水晶报表

博主是个还在上大学的新手,如果有什么说错的地方请务必帮我指出来,谢谢!

想要完成一个能够动态改变其中数据的水晶报表,可以通过创建一个 数据的中转站来存储和输出数据的方式。

借由这个中转站,我们可以通过为它动态输入数据,然后再将数据导出到水晶报表,来达到得到有动态数据的水晶报表的目的。

仅在vs中,很多它自带的应用也可以达到中转站的作用,比如数组,数据集等。

博主最近刚在学SQL所以尝试了用VS连接数据库来做水晶报表。

1.首先,博主在SQL中创建了名为xxs的数据库,然后再在数据库xxs中创建了一张名为xxs_1的表格,同时在其中建立了名为ques的列。

2.然后回到vs,创建windows窗体应用程序(博主是为了给数据库录入数据才用窗体的,网友有其他方法就随意了。)

为程序写入代码:

1 SqlConnection conn2 = newSqlConnection();2 conn2.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";3 conn2.Open();4 SqlCommand cmd2 = newSqlCommand();5 cmd2.Connection =conn2;6 mandType =CommandType.Text;7 string sql2 = "insert into xxs_1(ques) values(@ques)";8 SqlParameter[] parameters2 = newSqlParameter[]9 {10 new SqlParameter("@ques", f)11

12 };13 mandText =sql2;14 cmd2.Parameters.AddRange(parameters2);15 cmd2.ExecuteNonQuery();16 conn2.Close();17 cmd2.Dispose();

其中conn2.ConnectionString是SQL数据库的路径,字符串sql2是将要在SQL中执行的SQL语句,字符串f是要为 “列ques”添加的数据。

为了给列添加足够多的数据,博主用了循环语句,在这里就不细说了,毕竟只是对以上语句进行循环,为f反复赋值,再写入列而已。

3.完成了对数据的录入以后,我们就可以建立水晶报表了。

就如上所说,博主为了给数据库xxs录入数据,所以用了form窗体。

在窗体中博主应用了如下两个button组件。

其中“生成题库”就是应用第2步中的代码为数据库输入数据,而“预览报表”就是我们现在要讲的建立水晶报表了。

在写代码之前,博主先做了一些准备工作。

(1)连接数据库。

点击菜单栏的数据按钮/在打开的菜单中点击添加新的数据源/在弹出的数据源配置向导中选择从“数据库”获取数据源,点击下一步/点击新建连接/在弹出的添加连接窗口中写入服务器名(一般都是.(对,就是个“点”)),选择用SQL SEVER 身份验证,输入用户名和密码,然后就可以在“选择或输入一个数据库名”中写入数据库名了,然后点击确定,点击下一步/进入"选择数据库对象",选择你需要在水晶报表中显示的表和列,点击完成。

(2)创建水晶报表。

右键解决方案资源管理器下的第一个项目/在弹出的菜单栏中选择添加,点击新建项。/在弹出的添加新项中选择Reporting中的Crysal报表(如下)。/

/然后会弹出Crystal report库窗体,选择使用“报表向导“和”标准“,选择确定。/在标准报表创建向导中打开项目数据,打开数据集选择需要的数据库中的表,将它添加到右侧。点击下一步/选择需要的列,将它添加到右侧,点击下一步。/分组和记录选定我没用到,所以直接点击了下一步,样式我选择了表,点击完成。

至此,我们已经完成了对水晶报表的创建。

4,为水晶报表添加数据。

为了使”预览报表“功能可以完善一些,博主又在项目中添加了一个窗体应用程序Form2(如下)。

Form2中只添加一个CrystalReportViewer控件。

然后双击Form2窗体,写入代码:

1 CrystalReport1 cry = newCrystalReport1();2 SqlConnection conn = newSqlConnection();3 conn.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";4 conn.Open();5 SqlCommand cmd = newSqlCommand();6 cmd.Connection =conn;7 mandType =CommandType.Text;8 string sql = "select ques from xxs_1";9 mandText =sql;10 DataSet ds = new DataSet();//新建一个临时数据库

11 SqlDataAdapter adt = newSqlDataAdapter();12 adt.SelectCommand =cmd;13 adt.Fill(ds, "inf");//将数据导入到ds中

14 DataTable dt = ds.Tables["inf"];//只是为了后面引用时方便点,直接写ds.Tables["inf"]也是可以的。

用以上代码取出数据库 xxs 中表xxs_1 中的列 ques 中的数据。

最后再写入代码:

1 cry.SetDataSource(dt);

2 this.crystalReportViewer1.ReportSource = cry;

就可以将数据写入到水晶报表中去了。

5.当然,为了能够反复输入数据到SQL,再导出数据到水晶报表,我们需要在建立水晶报表后清空SQL数据库中数据,所以在结束了以上的一切后还要在最后写入代码:

1 SqlConnection conn1 = newSqlConnection();2 conn1.ConnectionString = "server=.;database=xxs;uid=sa;pwd=123";3 conn1.Open();4 SqlCommand cmd1 = newSqlCommand();5 cmd1.Connection =conn1;6 mandType =CommandType.Text;7 string sql1 = "truncate table xxs_1";8 mandText =sql1;9 cmd1.ExecuteNonQuery();10 conn1.Close();

这样就完成了一张用SQL数据库作为数据中转站的动态数据水晶报表。

下面是效果演示:

当我运行程序按下“生成题库”是,程序会往数据库中添加数据,比如我要生成40道运算题,就可以得到这样的表

再当我按下”预览报表“时,便得到了这样的水晶报表:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。