如何将System.Data.SqlClient.SqlConnection转换为CrystalDecisions.Shared.ConnectionInfo

时间:2012-10-05 00:17:40

标签: c# crystal-reports connection-string

如何将System.Data.SqlClient.SqlConnection转换为CrystalDecisions.Shared.ConnectionInfo

可能吗?有人请帮助解决这个问题。

3 个答案:

答案 0 :(得分:0)

根据MSDN for ConnectionInfo,ConnectionInfo对象就是它所声明的,关于连接的信息。 SqlConnection用于建立与数据库的连接。

SqlConnection具有创建ConnectionInfo对象所需的信息。 特别, DataSourceDatabase,和 Credential

答案 1 :(得分:0)

为什么不能创建新的CrystalDecisions.Shared.ConnectionInfo对象并将其属性设置为等于SqlConnection上的相应属性?

答案 2 :(得分:0)

发现自己处于类似的情况,解决方案不是将sqlconnection本身转换为connectioninfo,而是使用连接字符串。以下代码使用SqlConnectionStringBuilder就是这样做:

ConnectionInfo connection = new ConnectionInfo();

string connectionString = ConfigurationManager.ConnectionStrings["_2Focus.Properties.Settings._2ServeConnection"].ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
connection.ServerName = builder.DataSource;
connection.DatabaseName = builder.InitialCatalog;
connection.IntegratedSecurity = builder.IntegratedSecurity;
if (!builder.IntegratedSecurity)
{
    connection.Password = builder.Password;
    connection.UserID = builder.UserID;
}

Tables CrTables = report.Database.Tables 
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
    CrTable.LogOnInfo.ConnectionInfo = connection;
    CrTable.ApplyLogOnInfo(CrTable.LogOnInfo);
} 

这个问题已经过时了,操作上没有多少分,所以可能这不会被标记为答案。无论如何,我认为这是正确的做法。