我只是嘗試簡單使用oracle db與C#連接。應該沒什麼大不了的。但它總是失敗。它在MS-Access中工作。哪裏有問題 ? (OLEDB或ODBC沒什麼區別就在這裏,我想兩者)爲什麼在Oracle中SQL連接失敗?
編輯:
- 可能會Oracle版本是什麼問題? (好像我們使用8.1.7.0.0和8.1.5.0.0模塊)
代碼:
using System;
using System.Data.Odbc;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string n = Environment.NewLine + "--------------------------------" + Environment.NewLine + Environment.NewLine;
// connect
string connectionString = "dsn=TEST;uid=read;pwd=myPwd";
OdbcConnection connection = new OdbcConnection(connectionString);
connection.Open();
// select (key is actually text not numeral)
string query = "select * from INFOR.ZEITEN where (KEY = 0)";
query = "select a.KEY, b.GREG from INFOR.ZEITEN a inner join INFOR.ZEITEN b on (a.AUSWEIS = b.AUSWEIS) where (a.KEY like '1')";
try
{
query = query.Replace(Environment.NewLine, " ");
Console.WriteLine(n + query);
OdbcCommand command = new OdbcCommand(query, connection);
OdbcDataReader reader = command.ExecuteReader(); // throws exception
if (reader != null)
Console.WriteLine(n + "success, now read with reader!");
}
catch (Exception e)
{
Console.WriteLine(n + e.Message + n + e.StackTrace);
}
// wait
Console.ReadKey();
}
}
}
輸出:
而成功,簡單的選擇:
這似乎與C#沒有任何關係。如果兩個SQL語句之一失敗,您應該檢查它是否有效。您是否嘗試過使用查詢工具執行語句? –
@PanagiotisKanavos是的,我知道。你告訴那些昨天當我問我爲什麼在oracle_上失敗的SO用戶時!他們想看看C#代碼。 – Bitterblue
你正在使用什麼驅動程序版本,以及你連接的數據庫版本是什麼?有可能其中的一個太舊以至於無法支持'join'語法。這看起來不太可能,但我們似乎仍然對8i有疑問,所以誰知道。 (你還可以在Pro * C中設置'dbms = v8',它也有這個效果)。 –