网站之前是asp.netl连接SQL Server的,运行正常。现在想要部分页面连接oracle,获取oracle里的数据。自己试验半天,总是不成功,好像是同时连接两个数据库会有冲突,而且在App_Code文件夹下面有两个数据库连接的类是否有冲突?我写的连接oracle的类如下:
public class dbora
{
public dbora()
{
} public static OracleConnection CreateDBcon()
{
return new OracleConnection("Server=172.**.***.**;Data Source=ccora_172.**.***.**;uid=webuser;pwd=12345;");
}}另外,为同时连接两个数据库,web.config里应该如何设置?求解决方案!多谢多谢!
public class dbora
{
public dbora()
{
} public static OracleConnection CreateDBcon()
{
return new OracleConnection("Server=172.**.***.**;Data Source=ccora_172.**.***.**;uid=webuser;pwd=12345;");
}}另外,为同时连接两个数据库,web.config里应该如何设置?求解决方案!多谢多谢!
如果之前的项目设计的好,数据库访问层可以很轻松的去查数据
前台并不需要知道到底去哪个数据库里面查
string ConnectionString="Data Source=TEST;user=system;password=manager;"; OracleConnection conn=new OracleConnection(ConnectionString);
然后根据要连接不同的数据库设置相对的配置字段
<connectionStrings>
<!--连接SQL-->
<add name="***Connection" connectionString="Database=***;Data Source=localhost;User Id=***;Password=*" />
<add 连接ORACLE/>
</connectionStrings>在程序中利用以下代码调用:
string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ipmanageConnection"].ToString();看看对你有用吗?不对的地方还请包涵
<add key="Connstr2" value="Data Source=ORCL;user=system;password=eduask;"/>
再添加一套类似上面的oracle连接方法
在调用的时候直接修改连接名称
调用sql连接
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString= PubConstant.Connstr;
public DbHelperSQL()
{
}
调用oracle连接
public static string connectionString= PubConstant.Connstr2;
这样就行了!
之前web.config什么都没设置 也没在那设置连接。但如果在web.config设置新的连接,就会和之前的连接类冲突。。
像我下一个帖子的那样!
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace Maticsoft.DBUtility
{
/// <summary>
/// 数据访问抽象基础类
/// Copyright (C) 2004-2008 By LiTianPing
/// </summary>
public abstract class DbHelperSQL
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = PubConstant.ConnectionString;
public DbHelperSQL()
{
} #region 公用方法
/// <summary>
/// 判断是否存在某表的某个字段
/// </summary>
/// <param name="tableName">表名称</param>
/// <param name="columnName">列名称</param>
/// <returns>是否存在</returns>
public static bool ColumnExists(string tableName, string columnName)
{
string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
object res = GetSingle(sql);
if (res == null)
{
return false;
}
return Convert.ToInt32(res) > 0;
}
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.SelectCommand.CommandTimeout = Times;
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
/// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
if (parameter != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
command.Parameters.Add(parameter);
}
} return command;
} /// <summary>
/// 执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
} /// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}
#endregion }}