我只是使用oracle尝试使用简单的连接和C#。应该没什么大不了的。但总是失败。它适用于。问题出在哪里?(OleDb或Odbc在这里没有什么区别,我都试过了)
编辑:
代码:
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();
}
}
}输出:

成功的,简单的选择:

发布于 2014-03-28 12:47:07
ANSI加入(前)。inner join)在9i中首次被支持。您需要使用旧的语法:
select a.KEY, b.GREG
from INFOR.ZEITEN a,
INFOR.ZEITEN b
where (a.AUSWEIS = b.AUSWEIS)
and (a.KEY like '1')请注意,在本例中,like运算符与=等效,但您可能知道
发布于 2014-03-28 12:13:11
单词key是一个保留词。这意味着这是一个非常糟糕的身份选择。你得用双引号来逃避它。这样做可能会奏效:
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')";我猜\"会在这个上下文中工作,但是可能会有另一种方法来插入这个字符。
发布于 2014-03-28 12:16:39
我认为KEY是数字的,所以不能使用LIKE。这是因为WHERE KEY = 0运行得很好。
https://stackoverflow.com/questions/22712444
复制相似问题