Получение этой ошибки «ORA-06413: Соединение не открыто» - PullRequest
1 голос
/ 06 января 2012

Я использую Visual Studio 2010 и Oracle 10g.Операционная система: Windows 7 Home Basic.Если я использую следующий код в Visual Studio 2005, я получаю правильный вывод.Но в Visual Studio 2010 я получаю ошибку

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OracleClient;
using System.Windows.Forms;

public partial class Default2 : System.Web.UI.Page
{
    OracleConnection con = new OracleConnection("uid=scott;pwd=tiger;data source=");
    OracleCommand cmd = new OracleCommand();
    OracleDataReader dr;
    string name1, pass1;
    protected void Page_Load(object sender, EventArgs e)
    {
        con.Open();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        cmd = new OracleCommand("Select* from tb1 where name='" + TextBox1.Text + "'and pass='"+TextBox2.Text + "'", con);
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            name1 = dr[0].ToString();
            pass1 = dr[1].ToString();
        }
        if (name1 == TextBox1.Text && pass1 == TextBox2.Text)
        {
            Response.Redirect("Home.aspx");
        }
        else
        {
            MessageBox.Show("Incorrect user name or password");
        }
    }
}

Ответы [ 5 ]

0 голосов
/ 07 марта 2013

VS 2010: я хотел бы поделиться опытом, когда я пул соединение oracel через службу WCF и размещал этот WCF на сервере разработки.получаю эту ошибку "ORA-06413: Соединение не открыто".не удалось найти актуальную помощь для веб-поиска.Наконец, я развернул скомпилированную версию WCF на рабочем сервере.когда я использовал этот сервис WCF из моего приложения, он работал для меня ....

Надеюсь, это может помочь кому-то, столкнувшемуся с той же проблемой ...

0 голосов
/ 07 января 2012

Найдите на своем жестком диске файл с именем tnsnames.ora и опубликуйте его содержимое здесь.

И несколько советов:

  • Будет создан объект con иоткрывается каждый раз при загрузке страницы.
  • Нажатие кнопки приводит к загрузке страницы и событию загрузки страницы.См. « Основные этапы жизненного цикла страницы ».
  • Переместите код в обработчик кнопки-клика.
  • MessageBox всегда отображается на сервере, пользователь изклиент никогда не увидит это сообщение.Когда вы разрабатываете, сервер и клиент находятся на одном физическом компьютере.
  • Добавьте div к вашему default2.aspx.

и позвоните:

error.InnerText="Incorrect user name or password";

Проверьте имя и пароль дважды, один раз в операторе SQL и один раз в коде.Это лучше:

dr.Read(); 
    If (dr.HasRows())
        Response.Redirect("Home.aspx");
    else
        error.InnerText="Incorrect user name or password";
0 голосов
/ 06 января 2012

Это может быть проблема с tnsnames.ora, где определено ваше соединение.

Вы можете опустить tnsnames.ora с этой строкой соединения:

OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = !!!!!!!!YOURDBNAME!!!!!!!!!)(SERVER = DEDICATED))); User Id=Scott;Password=tiger;");
0 голосов
/ 06 января 2012

Удалите открытое соединение со страницы загрузки и добавьте следующее перед выполнением:

if(con.State == ConnectionState.Closed)
{
        con.Open();
}

dr = cmd.ExecuteReader();
0 голосов
/ 06 января 2012

Вы не назначили соединение для команды, вам нужно что-то вроде ниже, прежде чем вы выполните команду:

cmd.Connection = con;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...