2011-04-25 5 views
0

Я новичок в Oracle, и я только что установил Oracle 10g XE и его пакет ODAC для .NET. Я делаю простое приложение для подключения и получения таблицы в VB, однако оно всегда выдает ошибку «Таблица не найдена».ODP.net + VB = Таблица не найдена

Я создал таблицу «Test» в Oracle Home (веб-администратора вещь) и здесь есть код, я использую в VB:

Dim oraCmd As New OracleCommand("Select * From Test") 
    oraCmd.Connection = oraCon 

    oraCon.Open() 

    oraCmd.ExecuteReader() 
    'Reader code supressed 

EDIT Когда я пытаюсь тот же запрос в базу данных Дом, он работает.

+0

Двойной проверить, что строка подключения находится в правой базе данных. – Jack

+0

можете ли вы разместить строку соединения? –

+0

Создана таблица, под которой пользователь, вы подключаетесь к нужному пользователю? – V4Vendetta

ответ

-1

Если вы входите в систему с использованием другого пользователя в оракуле и хотите читать из таблицы под другим пользователем, вы должны полностью квалифицировать свое имя таблицы. Если таблица создается под именем пользователя «test_user», затем запрос таблицу как «Select * From TEST_USER.test»

Это работает для меня, когда вошли в систему под тем же именем которого была создана таблица:

private const string connString = "DATA SOURCE=//server:port/service_name;PASSWORD=pswd;USER ID=user_name;"; 

    static void Main(string[] args) 
    { 
     OracleConnection conn = new OracleConnection(connString); 
     conn.Open(); 

     OracleCommand cmd = new OracleCommand("select * from test", conn); 

     // This would also work if the username I used to login was "TEST_USER". 
     // OracleCommand cmd = new OracleCommand("select * from TEST_USER.test", conn); 

     cmd.ExecuteReader(); 

     conn.Close(); 
    } 

Другая возможная проблема заключается в том, что вы назвали вашу таблицу строчными буквами как «Тест», вместо того, чтобы ее называли «ТЕСТ» в базе данных. В этом случае вам нужно ссылаться на таблицу с кавычками вокруг него, как, например:

static void Main(string[] args) 
    { 
     OracleConnection conn = new OracleConnection(connString); 
     conn.Open(); 

     OracleCommand cmd = new OracleCommand("select * from \"Test\"", conn); 
     cmd.ExecuteReader(); 

     conn.Close(); 
    } 

Или вы также можете переименовать таблицу в оракула, если дело является проблемой, и вы хотите разрешить это следующим образом:

ALTER TABLE "Test" RENAME TO TEST; 
+0

Я не думаю, что оракул чувствителен к регистру для имен таблиц или столбцов – V4Vendetta

+0

Да, это работает: CREATE TABLE TEST_TABLE (ID NUMBER); CREATE TABLE "Test_Table" (ID NUMBER); CREATE TABLE успешно выполнен. CREATE TABLE удалось. – mservidio

+0

Большое вам спасибо, это сработало! Спасибо всем за ваши ответы! – Carlitrosss

Смежные вопросы