Try the following code instead:
public static void SetCrystalConnection(ReportDocument doc)
{
doc.SetDatabaseLogon("UserName", "Password");
}
If you have subreports with a different connection try:
public static void SetCrystalConnection(ReportDocument doc)
{
var defaultDbName = "TheDefaultDatabaseName";
doc.SetDatabaseLogon("UserName", "Password");
if (!doc.IsSubreport)
for (int i = 0; i < doc.Subreports.Count.GetIntValue(); i++)
if (defaultDbName != doc.Subreports[i].DataSourceConnections[0].DatabaseName)
SetCrystalConnection(doc.Subreports[i]);
}