【问题标题】:How to get response form Oracle using C#?如何使用 C# 从 Oracle 中获取响应?
【发布时间】:2017-06-08 08:41:09
【问题描述】:

我是 Oracle 的新手,正在尝试使用 C# 执行下一个 SQL 请求

try
{
    connection.Open();
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = connection;
    cmd.CommandText = "select count(*) from agreements";
    cmd.CommandType = CommandType.Text;
    OracleDataReader dr = cmd.ExecuteReader();
    dr.Read();
}

我已经阅读了 Oracle 文档,我尝试过使用

var response = dr.GetString(0);

但它总是返回异常

指定的转换无效。

有人知道我该如何解决吗?感谢您的回答!

【问题讨论】:

  • 你正在获取count(*)。为什么你会期望结果是一个字符串?
  • 关于 Dr.GetString(0);可能第一个不是字符串...正如@JonSkeet 已经说过的那样,检查您要获取的内容以将其与类型匹配
  • @JonSkeet 哦,谢谢你的好回答,我用过 GetValue();并解决了它。我想什么 oracle 返回字符串:/
  • @UladzimirKhadakouski:你真的读过我的回答,建议你一开始就不应该打电话给ExecuteReader()吗?不要追求“解决眼前问题的最简单的事情”——花点时间做正确的事情。
  • @JonSkeet 是的,我做了,但不是全部,你已经删除了 unswer,你能分享链接让我了解更多信息吗?请。

标签: c# sql oracle


【解决方案1】:

鉴于您正在查询count(*),一方面,您最好使用ExecuteScalar 而不是ExecuteReader()。接下来,结果将是一个整数,这就是GetString() 失败的原因。

改成:

int count = (int) cmd.ExecuteScalar();

(我还强烈建议您使用using 语句来连接您的连接、命令和您通常创建的任何阅读器。)

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多