【发布时间】:2017-05-18 19:24:22
【问题描述】:
我是 Web 编程的初学者,但我遇到了 oracle 数据库连接问题。我的代码在 Mssql 上运行良好,但不适用于 oracle。我想将 db 从 mssql 更改为 oracle。 我已经下载了odac。这是我的 SqlOperations 类。
using System;
using System.Collections.Generic;
using System.Data;
using Oracle.DataAccess;
using System.Data.OracleClient;
using System.Data.Odbc;
using System.Linq;
using System.Web;
namespace BagciEmlak
{
public class SqlOperations
{
OracleConnection con;
OracleCommand cmd;
OracleDataAdapter sda;
DataTable dt;
public OracleConnection OracleConnect()
{
try
{
con = new OracleConnection ("Data Source=SYS-CDB12c; User ID=HR; Password=hr; Unicode=true;");
con.Open();
return con;
}
catch (OracleException e)
{
throw;
}
}
public int Command(string ConStr, OracleConnection conn)
{
try
{
cmd = new OracleCommand(ConStr, conn);
return cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw;
}
finally
{
cmd.Dispose();
conn.Close();
conn.Dispose();
}
}
public DataTable GetDataTable(string ConStr, OracleConnection conn)
{
try
{
dt = new DataTable();
sda = new OracleDataAdapter(ConStr, conn);
sda.Fill(dt);
return dt;
}
catch (Exception e)
{
throw;
}
finally
{
sda.Dispose();
conn.Close();
conn.Dispose();
}
}
public DataRow GetDataRow(string ConStr, OracleConnection conn)
{
dt = GetDataTable(ConStr, conn);
if (dt.Rows.Count==0)
{
return null;
}
else
{
return dt.Rows[0];
}
}
public string GetDataCell(string ConStr, OracleConnection conn)
{
dt = GetDataTable(ConStr, conn);
if (dt.Rows.Count == 0)
{
return null;
}
else
{
return dt.Rows[0][0].ToString();
}
}
}
}
这是我的 webconfig 代码:
<connectionStrings>
<add name="{ConnectionName}"
connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=HR;Password=HR;"
providerName="Oracle.DataAccess.Client"/>
</connectionStrings>
所以你能帮我看看有什么问题吗
【问题讨论】:
-
当我编译时没有错误,但在 chrome 中我看到:“/”应用程序中的服务器错误。无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序。
-
System.Data.OracleClient已弃用。不要使用它。使用Oracle Managed Client。并且不要将您的 IDiposable (OracleConnection) 对象存储为字段。当然,为什么要使用 DataTable 而不是强类型对象? -
你有一个 TNSNAMES 文件还下载 32 位的 Oracle.Data.Client .. 你可以像使用 Sql Server 等一样使用连接字符串。我使用 Oracle 和 Sql Server每天。例如,根据您的项目设置,您可以将其更改为 x86,然后更改您的配置文件以使其看起来不同.. 例如
<connectionStrings> <add name="DbConn" connectionString="Data Source=DBANAME;User Id=userId;Password=yourPassword;"/>
标签: c# asp.net database oracle database-connection