【问题标题】:Oracle connection with asp.net v13Oracle 与 asp.net v13 的连接
【发布时间】:2017-09-29 08:31:29
【问题描述】:

我有这个问题很长时间了,无法解决>希望我能在这里得到解决方案。我已经安装了 Oracle express edition 11 g,并且我已经创建了表空间和模式。然后,我安装了 ASP.NET。 当我编译项目时,它显示 conn.open() 错误。

我试过这个连接

    private void clidrop()
    {
        string oradb = "DATA SOURCE=xe;USER ID=AMC; password=amc;";
        OracleConnection conn = new OracleConnection(oradb);

        conn.Open();

        string smst = "select *FROM  TECHNOVA_SMS_CLNT_MTR";
        OracleCommand cmdt = new OracleCommand(smst, conn);
        cmdt.CommandType = CommandType.Text;

        DataSet dst = new DataSet();
        OracleDataAdapter dtt = new OracleDataAdapter(cmdt);
        dtt.Fill(dst);
        clientName.DataSource = dst.Tables[0];
        clientName.DataTextField = "SMS_CLNT_NAME";
        clientName.DataValueField = "SMS_CLNT_ID";
        clientName.DataBind();

        clientName.Items.Insert(0, " --Select--");
        clientName.Items[0].Selected = true;
        clientName.Items[0].Attributes["disabled"] = "Disabled";

        conn.Close();
        conn.Dispose();

    }

错误是:

当前网络请求执行过程中发生未处理的异常

exceptions

【问题讨论】:

  • 请提供错误详情,以及您正在使用的连接属性(连接字符串等)。
  • 错误是什么?
  • “/”应用程序中的服务器错误。 Unhandled Execution Error 描述:在当前web请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:Oracle.DataAccess.Client.OracleException:源错误:第 127 行:OracleConnection conn = new OracleConnection(oradb);第 128 行:第 129 行:conn.Open();第130行:第131行:string sms1 = "select SMS_PROJ_ID, SMS_PROJ_NAME from TECHNOVA_SMS_PROJ_MTR,
  • 主机名 localhost 端口 1521sid xe

标签: c# asp.net oracle


【解决方案1】:

尝试改变它:

string oradb = "DATA SOURCE=//localhost:1521/XE;User Id=AMC; password=amc;";

仅使用 XE 驱动程序假定已在您的 tnsnames.ora 文件中声明了名为 XE 的服务。

【讨论】:

  • 显示此错误 -- 附加信息:“用户名”是无效的连接字符串属性
  • 抱歉修改了我的答案,将用户名替换为“用户 ID”
  • 你说:“用户名”是一个无效的连接字符串属性如果你用“用户 ID”替换它并只更改数据源部分会出现什么错误
  • 附加信息:外部组件已抛出异常。
  • 什么异常?
【解决方案2】:

试试这个代码示例(但请注意 System.Data.OracleClient 已弃用):

using System.Data.OracleClient;
using System.Data;     
class Example 

    {
        private string m_sConnectionString;
        private OracleConnection m_dbConnection = null;

        public OracleConnection Connection
        {
            get
            {
                if (null == m_dbConnection)
                {
                    m_dbConnection = new OracleConnection(m_sConnectionString);
                }
                return m_dbConnection;
            }
        }

        /// <summary>
        /// Open the connection
        /// </summary>
        public void Open()
        {
            if (Connection.State != ConnectionState.Open)
                Connection.Open();
        }

        /// <summary>
        /// Close the connection
        /// </summary>
        public void Close()
        {
            try
            {
                if (null == m_dbConnection)
                    return;
                m_dbConnection.Close();
            }
            catch { }
        }

        /// <summary>
        /// Execucte a SQL command, with open a new connection
        /// </summary>
        /// <param name="query">The SQL Query</param>
        public void Execute(string query)
        {
            Open();
            using (OracleCommand dbSqlCmd = Connection.CreateCommand())
            {
                dbSqlCmd.CommandText = query;
                dbSqlCmd.ExecuteNonQuery();
                dbSqlCmd.Dispose();
            }
        }

        public void Connect(string schema, string password, string datasource)
        {           
            OracleConnectionStringBuilder conn_builder = new OracleConnectionStringBuilder();
            conn_builder.DataSource = datasource.Replace("/", @"\"); //Replace the / with a \ (standard path);           
            conn_builder.Add("Password", password);
            conn_builder.Add("User ID", schema);
            conn_builder.Pooling = true;
            conn_builder.MaxPoolSize = 40;
            conn_builder.MinPoolSize = 40;          
            conn_builder.Unicode = true;
            m_sConnectionString = conn_builder.ConnectionString;            
        }
    }

【讨论】:

  • 您可以将代码添加为新的类文件。然后你可以像这样使用它:Example e = new Example(); e.Connect("user", "password", "TNS_Name_of_Instance"); e.Execute("select 'test' from dual;"); e.Close();
  • 错误 5 当前上下文中不存在名称“ConnectionState” C:\Users\IBTISAM\Documents\Visual Studio 2013\Projects\WebApplication1\WebApplication1\Class1.cs 32 37 WebApplication1
  • if (Connection.State != ConnectionState.Open) 这里是错误ConnectionState not defined
  • 您的班级中有对 System.Data.OracleClient 和 System.Data 的引用吗?
  • 是 _ 使用系统;使用 System.Collections.Generic;使用 System.Linq;使用 System.Web;使用 System.Data.OracleClient;
猜你喜欢
  • 2016-03-04
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
相关资源
最近更新 更多