连接无法在visual studio中打开

时间:2015-01-10 20:05:35

标签: c# asp.net oracle-sqldeveloper

对于我的C#应用​​程序,我需要连接oracle数据库。我一直使用相同的连接,它与其他应用程序完美配合。添加了我一直使用的相同引用:Oracle.DataAcces

这是问题,我不知道如何解决它。

  

类型' Oracle.DataAccess.Client.OracleException'的例外情况发生在Monime_V2.0.dll但未在用户代码中处理

     

其他信息:外部组件引发了异常。

这是我用来连接的东西:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

// Oracle 
using Oracle.DataAccess.Types;
using Oracle.DataAccess.Client;

namespace Monime_V2._0
{
    public class Database
    {
         protected OracleConnection conn;
         public OracleConnection Conn
        {
        get
        {
            return this.conn;
        }
    }

    public Database()
    {
        //dbconnectie
        this.conn = new OracleConnection();
        string pcn = "dbi284945"; //login
        string pw = "HGD7dh8daa"; //password
        this.conn.ConnectionString = "User Id=" + pcn + ";Password=" + pw + ";Data Source=" + "//192.168.15.50:1521/fhictora" + ";";
    }

这就错了:

private List<Account> GetListAccounts()
    {
        List<Account> listA = new List<Account>();

        string sql = "select * from MT_ACCOUNT";
        OracleCommand cmd = new OracleCommand(sql, this.conn);

        try
        {
            this.conn.Open(); // <-- This line of code sends me to the exception catcher
            OracleDataReader reader = cmd.ExecuteReader();

3 个答案:

答案 0 :(得分:0)

解决此错误消息的最佳方法是使用OracleException:

ArrayList<Appartement> sorted = new ArrayList<>();
boolean ispresent = false;
for (Appartement p1: res2) {
     ispresent = false;
     for (Appartement p2: res2) {
         if (p1.equals(p2))
             continue;
             if (!p1.ContainNull() && !p2.ContainNull()){
             if (p1.getRoomCount().equals(p2.getRoomCount()) && p1.getPrice().equals(p2.getPrice()) && p1.getSurface().equals(p2.getSurface())
                            && p1.getZipCode().equals(p2.getZipCode()) && p1.getNewBuild().equals(p2.getNewBuild())
                            && p1.getPropertyType().equals(p2.getPropertyType()) && p1.getFurnished().equals(p2.getFurnished())
                            && p1.getMarketingType().equals(p2.getMarketingType())) {
                        ispresent = true;
                        break;
                    }
                }
            }
          if (!ispresent)
              sorted.add(p1);
     }

您可以更准确地诊断出问题所在。例如,而不是这个无用的通用错误消息:

  

“Oracle.DataAccess.Client.OracleException”类型的异常

我明白了:

  

{“ORA-06550:第1行第7列:\ nPLS-00306:调用'GETCLIENTBYID'\ nORA-06550:第1行第7列:错误数量或类型的参数:\ n / SQL:忽略语句“}

答案 1 :(得分:-1)

您应该为public database()

尝试此代码
public Database()
{
        //dbconnectie
        this.conn = new OracleConnection();
        string pcn = "dbi284945"; //login
        string pw = "HGD7dh8daa"; //password
        string connection = string.Format("User Id ={0};password={1};Data Source=//192.168.15.50:1521/fhictora;",pcn,pw);
        this.conn.ConnectionString = connection;
}

答案 2 :(得分:-1)

运行代码时是否打开了oracle管理?