Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量参数传递给db.Query会导致非法变量名:ASP/HTML/WebMatrix_Html_Asp.net_Oracle_Parameters_Webmatrix - Fatal编程技术网

将变量参数传递给db.Query会导致非法变量名:ASP/HTML/WebMatrix

将变量参数传递给db.Query会导致非法变量名:ASP/HTML/WebMatrix,html,asp.net,oracle,parameters,webmatrix,Html,Asp.net,Oracle,Parameters,Webmatrix,感谢您抽出时间查看我的帖子。 我已经提供了我所读到的试图解决这个问题的链接,以及我所使用的学习材料 下面是我遇到问题的代码。我尝试过对这段代码进行各种排列以使其正常工作,我相信主要问题在于我的变量设置。我正在查询外部Oracle数据库 @{ var db = Database.Open("DBNAME"); var searchterm = ""; var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WH

感谢您抽出时间查看我的帖子。 我已经提供了我所读到的试图解决这个问题的链接,以及我所使用的学习材料

下面是我遇到问题的代码。我尝试过对这段代码进行各种排列以使其正常工作,我相信主要问题在于我的变量设置。我正在查询外部Oracle数据库

    @{
    var db = Database.Open("DBNAME");
    var searchterm = "";
    var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";
    if (!Request.QueryString["searchterm"].IsEmpty()){
        searchterm = Request.QueryString["searchterm"];
                                                      }
  var selectedData = db.Query(searchQuery);
  var grid = new WebGrid(source: selectedData);  



}

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Movies</title>

    </head>
    <body>
            <form method ="get">
                <label for="searchterm">Please enter you UNIQUEVALUE</label>
                <input type="text" name="searchterm" value="@Request.QueryString["searchterm"]" />
                <input type="submit" value="Search UNIQUEVALUE" />

            </form>
        <div>
                    @grid.GetHtml()
        </div>
    </body>
</html>
但当我将其更改为以下内容时,它会因以下错误而中断:

@{
        var db = Database.Open("DBNAME");
        var searchterm = "";
        var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";
        if (!Request.QueryString["searchterm"].IsEmpty()){
            searchterm = Request.QueryString["searchterm"];
                                                        }
      var selectedData = db.Query(searchQuery,searchterm);
      var grid = new WebGrid(source: selectedData);  


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

Line 7:              searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = @0";                                            
Line 8:                                                          }
***Line 9:        var selectedData = db.Query(searchQuery,searchterm);***
Line 10:       var grid = new WebGrid(source: selectedData);  
将线条修改为如下所示。即使尝试在参数字段中传递一个静态值,对我来说也是行不通的

var selectedData = db.Query(searchQuery,"A00000000");
我在硬编码查询时使用Webmatrix验证了此查询返回的数据

var searchQuery= "SELECT * FROM DATABASENAME.DATABASETABLE WHERE UNIQUE ID = 'A00000000'"
 var selectedData = db.Query(searchQuery);
我尝试了几种不同的方法引用@0,并在设置值后向搜索词添加单引号。任何帮助都将不胜感激

学习/研究/文章阅读: 对堆栈溢出执行的搜索: System.Data.OracleClient.OracleException:ORA-01036:非法变量名称/编号 HTML ORA-01036:非法变量名称/编号\ ASP非法变量名/编号 ASP DB.Query()

在谷歌上完成的搜索: 查询参数

阅读有关堆栈溢出的文章: (不同的语法/语言)

谷歌阅读的文章:

用于实现这一目标的学习材料:
(通读本教程,并积极编写代码。)

您提到您尝试了几种引用参数的方法。但是,这是Oracle,他们使用:0进行参数化。你试过了吗

var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = ':0'";
:0参数只是将传递的字符串放入sql字符串中


你好,诺克斯!谢谢你复习我的问题。我试过那种方法。var searchterm=“A00000000”;var searchQuery=“SELECT*FROM DATABASE.DATABASETABLE,其中UNIQUEID='@0';var selectedData=db.Query(searchQuery,searchterm);我还尝试了以下方法:var searchTerm=“'a0000000'”;var selectQuery=“SELECT*FROM DATABASE.DATABASETABLE,其中UNIQUEID='@0';还有:var searchTerm=“”;var selectQuery=“SELECT*FROM DATABASE.DATABASETABLE,其中UNIQUEID='@0';searchTerm=“”+请求.查询字符串[searchTerm];+“”“大多数示例都是针对SQL Server的。Oracle使用冒号而不是at符号进行参数化。你可能不需要单引号,所以也试试吧。诺克斯!你是我的英雄。将位置参数更改为:0允许查询通过。您能为我提供您所使用的文档的正确方向吗?我想在将来参考它。因为您已经指出一个不同点是oracle,并且我对参数化不起作用的不同数据库有不同的体验,所以我研究了参数和oracle的堆栈溢出。链接在我更新的答案的底部。
var searchQuery = "SELECT * FROM DATABASE.DATABASETABLE WHERE UNIQUEID = ':0'";