如何使用asp.net c#根据用户输入查询oracle数据库

2024-01-08

当我尝试根据用户输入查询 Oracle 数据库并填写数据集以以 xml 格式显示时,我遇到了问题。 我在这里写了我的代码:-

using System.Data.OracleClient;

[WebMethod]
public string CallCardDetails(string CallCardNo)
{
     //initialize
     DataSet ds = new DataSet();

     //connect
     using (OracleConnection conn = new OracleConnection("User Id=oraDB;Password=ora;Data Source=CCT"))
     {
            <<(1st method)>>
            string query = "SELECT idcard from CallCardTable where idcard= :pCallCardNo";                

            <<(2nd method)>>
            string query = "SELECT idcard from CallCardTable where idcard=@CallCardNo";

            OracleCommand cmd = new OracleCommand(query, conn);

            cmd.CommandType = CommandType.Text;
            conn.Open();

            <<(1st method parameter -)>>
            OracleParameter pCallCardNo = new OracleParameter();
            pCallCardNo.Value = CallCardNo;
            cmd.Parameters.Add(pCallCardNo);

            <<(2nd method parameter - )>>
            cmd.Parameters.Add("@CallCardNo", OracleType.VarChar).Value = CallCardNo;

            OracleDataAdapter dA = new OracleDataAdapter(query, conn);
            dA.Fill(ds);

            cmd.Dispose();
            cmd.Parameters.Clear();
            dA.Dispose();
            conn.Close();
        }
        return ds.GetXml();

 }


<<1st exception>>
System.Data.OracleClient.OracleException: ORA-01008: not all variables bound

at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)

<<2nd exception>>
System.Data.OracleClient.OracleException: ORA-00936: missing expression

at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)

> System.Data.OracleClient.OracleException: ORA-01036: 非法变量名/编号

at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
at System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, Boolean& mustRelease, SafeHandle& handleToBind)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)

这应该有效:

    public string CallCardDetails(string CallCardNo)
    {
        //initialize
        using (DataSet ds = new DataSet())
        {
            //connect
            using (OracleConnection conn = new OracleConnection("User Id=oraDB;Password=ora;Data Source=CCT"))
            {
                // Oracle uses : for parameters, not @
                string query = "SELECT idcard from CallCardTable where idcard= :pCallCardNo";

                // Let the using block dispose of your OracleCommand
                using (OracleCommand cmd = new OracleCommand(query, conn))
                {
                    // Note: be careful with AddWithValue: if there's a mismatch between the .NET datatype of
                    // CallCardNo and the idcard column you could have an issue.  Cast the value you provide
                    // here to whatever is closest to your database type (String for VARCHAR2, DateTime for DATE, Decimal for NUMBER, etc.)
                    cmd.Parameters.AddWithValue(":pCallCardNo", CallCardNo);
                    conn.Open();

                    // Again, wrap disposables in a using or use try/catch/finally (using will dispose of things in case of exceptions too)
                    using (OracleDataAdapter dA = new OracleDataAdapter(cmd))
                    {
                        dA.Fill(ds);

                        return ds.GetXml();
                    }
                }
            }
        }
    }

编辑:在数据集周围添加使用块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用asp.net c#根据用户输入查询oracle数据库 的相关文章

  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • BufferBlock 连续

    我想使用以下方式实现消费者 生产者模式BufferBlock
  • C++0x 初始值设定项列表示例

    我想看看这个现有代码示例如何利用 C 0x 初始化列表功能 示例0 include
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 如何部署包含第三方 DLL 文件的 C# 应用程序?

    首先 我对部署了解不多 我希望我的问题有意义 我需要将 C 应用程序安装 部署到多个桌面 它需要一个第三方 DLL 文件 一个 C 库 lpsolve55 dll 对于那些感兴趣的人 它是一个免费的 MIP LP 求解器 请参阅 lpsol
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 如何从 C# 调用 F# 类型扩展(静态成员函数)

    FSharp 代码的结构如下 我无法控制源代码 namespace FS
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 应用新设置时如何防止 GraphicsDevice 被丢弃?

    我的游戏窗口允许手动调整大小 这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小 游戏还利用了RenderTarget2D rt2d 在主 Draw 方法中设置主渲染目标 GraphicsDevice SetRenderTarge
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 为什么 rand() 总是返回相同的值? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中生成随机数 https stackoverflow com questions 3067364 generating random numbers in c 使用 rand 生成随机数 http
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收

随机推荐

  • 两个 kubernetes 集群之间的 mTLS

    我正在尝试在两个 kubernetes 集群中的两个应用程序之间获取 mTLS 而无需使用 Istio 的方式 通过其入口网关 我想知道以下内容是否可行 对于 Istio Likerd Consul 假设我们有一个 k8s 集群 A 和一个
  • React Router browserHistory 适用于本地,不适用于生产

    每当我在本地使用 browserHistory 时 我都没有问题 但是当我在发货之前测试它时 我会得到一个带有错误的空白页面 因此 当我用 hashHistory 替换 browserHistory 时 一切正常 但我丢失了漂亮的网址 未捕
  • Thymeleaf - 如何有条件地将选中的属性添加到输入

    如你所知 input组件有一个属性 checked是否将复选框标记为默认启用
  • Activity 从下到上滑动,但后台 Activity 不应移动

    我正在尝试将一项活动从底部滑动到顶部 这是我能够做到的 但是 当从底部滑动到顶部时 我的后台活动也滑动到底部 我想将后台活动保持在与原来相同的位置 以便新活动在打开时看起来像是后台活动的覆盖 这是我的slide in up xml
  • 在 R 中将点图保存为 pdf [重复]

    这个问题在这里已经有答案了 当在函数内执行此命令时 我无法将点图保存为 pdf 正常调用时效果很好 df lt data frame a runif 10 b runif 10 c runif 10 x 1 10 pdf test pdf
  • AIDL Client 未绑定到远程服务

    我正在尝试使用远程服务运行简单的乘法 我有 AIDL 服务器文件声明和定义方法 在AIDL中 我在服务器的包名称下复制了与服务器相同的AIDL文件 我已经给出了服务器服务的意图过滤器的操作 我的 AIDL 客户端代码仍然没有连接到该服务 A
  • 本地函数和 SOLID 原则 C#

    我知道从 C 7 0 开始我们可以创建局部函数 但这与实现良好设计模型的 SOLID 原则有何关系 我的意思是 这不会打破单一职责原则 在另一个函数中添加一个函数吗 我们可以委托这个简单的任务在另一个方法或另一个新类中进行计算吗 对于允许我
  • 如何将侦听器从 Fragment 传递到 DialogFragment

    我有我Fragment这就是如何DialogFragment The DialogFragment创建并显示TimePickerDialog dialog 我希望调用 Fragment 来实现imePickerDialog OnTimeSe
  • 如何在 C# 中以编程方式执行方法重载解析?

    当 C 编译器解释方法调用时 它必须使用 静态 参数类型来确定实际调用的是哪个重载 我希望能够以编程方式完成此操作 如果我有一个方法的名称 astring 声明它的类型 一个实例System Type 以及参数类型列表我希望能够调用标准库函
  • 使用 Github 推送提交时出错: fatal: 无法读取用户名

    自从几次以来 我在我的项目中使用 Github 当我想要推送提交时我遇到了问题 首先 我创建了一个存储库 然后我克隆了叉子 使用命令行git clone https github com 并且 在进行修改后 我已成功承诺 git commi
  • 强制所有区域使用相同的布局

    我有以下项目结构 视图 共享 布局 区域 Area1 Views ControllerName Index 区域 AreaN Views ControllerName Index 有什么办法强制所有区域都使用 Layout as a 基地布
  • Git 服务器挂钩:获取正在推送的文件的内容?

    我正在尝试在我的团队中强制执行一些编码规则 为此 我编写了许多客户端挂钩 这些挂钩可以正常工作 但现在我希望当开发人员将其修改推送到中央存储库时运行相同的检查 但它们不起作用 这是我想做的 我想逐行遍历推送的文件 检查是否违反编码约定 如果
  • Chrome 版本 61 中扩展中的 ES6 模块

    这与以下问题不是同一个问题Google Chrome 扩展开发中的 ES6 模块 意外标记 https stackoverflow com questions 36796191因为这已经过时并且已经得到解答 谷歌发布了一份新闻稿 声称 Ch
  • 如何传递元组列表作为 OpenAI Gym 中的动作空间?

    从头开始创建 OpenAI Gym 环境时 必须定义一个动作空间 这是通过数据包 空间 中自己的 数据结构 来完成的 有几种不同类型的空间 如盒子 离散等 我有一个元组列表 我想用作操作空间 有没有办法做到这一点 我本来可以使用spaces
  • 如何从终端运行 google colab?

    我正在 google colab 中运行深度学习模型 它与 colab 笔记本配合得很好 问题是 随着云colab笔记本中深度学习模型训练的进展 我自己的电脑CPU和内存使用率也开始上升 仅 Colab Notebook 浏览器窗口的 RA
  • 调用 RevalidateBackHistory.php 中未定义的方法 Symfony\Component\HttpFoundation\BinaryFileResponse::header()

    我编写了一个中间件 以便用户在登录后无法再次进入登录页面 如果已经登录 它将重定向到管理面板 这是代码 class RevalidateBackHistory public function handle request Closure n
  • 使用 Socket.io 将数据从 Chrome for Android 连续传输到 Node.js 服务器

    我需要传输触摸位置 in 安卓版 Chrome 不断地 to a Node js服务器使用Socket io 不过 我猜 传输速度太快了 前几个值接收到服务器 第一次接触大约六个值 后来只有两个或三个值 然后似乎出现交通拥堵 在很长一段时间
  • 在缺失的模块上构建 Python 等

    我有另一个线程寻求有关 缺少 zlib 的帮助 在良好的帮助下 问题已经解决 几乎 现在我有兴趣自己构建 Python 在 Ubuntu 10 10 上 几个重要的问题引起了我的注意 构建 Python 后 例如 2 7 1 如果缺少模块
  • 即使 DependencyProperty 没有更改,也强制更新通知

    我有一个自定义 WPF 控件 它有一个典型的DependencyProperty 我们称之为Status 通过绑定定期更新 更具体地说 它绑定到一个根据发送通知的属性INotifyPropertyChanged 我想实现某种 过期 行为 如
  • 如何使用asp.net c#根据用户输入查询oracle数据库

    当我尝试根据用户输入查询 Oracle 数据库并填写数据集以以 xml 格式显示时 我遇到了问题 我在这里写了我的代码 using System Data OracleClient WebMethod public string CallC