找回密码
 立即注册

QQ登录

只需一步,快速开始

KearneyKang 讲师达人认证 悬赏达人认证

超级版主

199

主题

6505

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10804

圣诞拼拼乐微信认证勋章讲师达人悬赏达人元老葡萄

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-10-28 12:11  /   查看:4175  /  回复:4
本帖最后由 KearneyKang 于 2020-10-28 12:12 编辑

存在这样一个场景就是在设计报表的时候使用的是测试数据库,部署到不同的客户,这就需要配置正式的数据库连接,如果这个全部通过打开报表文件然后手动修改数据源的字符串连接的话,就会很麻烦,并且不利于后期项目的维护。下面我们就来看看代码层如何进行数据源数据集的修改:

实现代码:
  1. using Microsoft.Owin;
  2. using Owin;
  3. using System.Reflection;
  4. using System.Web.Routing;
  5. using GrapeCity.ActiveReports.Aspnet.Viewer;
  6. using GrapeCity.ActiveReports;
  7. using System.IO;
  8. using System.Linq;

  9. [assembly: OwinStartup(typeof(JSViewerMVCApplication5.Startup))]

  10. namespace JSViewerMVCApplication5
  11. {
  12.     public class Startup
  13.     {
  14.         public static string EmbeddedReportsPrefix = "JSViewerMVCApplication5.Reports";
  15.         public object GetReport(string P)//获取报表名称
  16.         {         
  17.             PageReport rep = new PageReport();
  18.             string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");//项目路径
  19.             rep.Load(new FileInfo(@"" + path + "Reports/" + P));//报表路径
  20.             //数据源连接字符串的修改
  21.             rep.Report.DataSources[0].ConnectionProperties.ConnectString = "DRIVER=SQLITE3 ODBC DRIVER;DATABASE=D:/Data/ArsDemo.db";         
  22.             //数据集查询语句的修改
  23.             rep.Report.DataSets[0].Query.CommandText = "select  *  from  全国主要城市人均消费排行";
  24.             return rep.Report;
  25.         }
  26.         public void Configuration(IAppBuilder app)
  27.         {
  28.             app.UseErrorPage();

  29.             app.UseReporting(settings =>
  30.             {
  31.                 //settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType()));
  32.                 settings.UseCustomStore(GetReport);//使用该方法可以自定义进行属性的设置和调用
  33.                 settings.UseCompression = true;
  34.             });

  35.             RouteTable.Routes.RouteExistingFiles = true;
  36.         }
  37.     }
  38. }
复制代码



4 个回复

倒序浏览
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2021-11-12 14:56:51
推荐
Tom猫 发表于 2021-11-6 20:26
除了代码处理外,官方还应该考虑在报表本身实现数据源连接字符串做安全处理,不然数据库的用户、密码很容易 ...

已反馈该需求
回复 使用道具 举报
Tom猫
中级会员   /  发表于:2021-11-6 20:26:32
推荐
除了代码处理外,官方还应该考虑在报表本身实现数据源连接字符串做安全处理,不然数据库的用户、密码很容易暴露的。
回复 使用道具 举报
人生就是修炼
注册会员   /  发表于:2023-8-11 16:02:35
地板
Tom猫 发表于 2021-11-6 20:26
除了代码处理外,官方还应该考虑在报表本身实现数据源连接字符串做安全处理,不然数据库的用户、密码很容易 ...

非常赞同!数据库安全是个不可忽视的问题!
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-8-11 17:25:05
6#
人生就是修炼 发表于 2023-8-11 16:02
非常赞同!数据库安全是个不可忽视的问题!

感谢老铁反馈,该需求已反馈~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部