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
c#声明记录集变量等于存储过程中的字符串_C#_Asp.net_Vb.net - Fatal编程技术网

c#声明记录集变量等于存储过程中的字符串

c#声明记录集变量等于存储过程中的字符串,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我正在将以前vb代码中的经典asp转换为c#中的asp.net。将变量分配给记录集存储过程变量(objRs)时遇到问题。我试着把它设置为 strip=objRs(“strip”) 但这给了我一个关于objRS的错误“应为局部变量ADODB.Recordset objRS-方法委托或事件” 我用括号试过: strip=objRs[“strip”] 这给了我第二条带上的错误:“不明确索引器:ADODB.Fields(在接口\记录集中);ADODB.Fields(在接口\记录集15中);”“(在接口\

我正在将以前vb代码中的经典asp转换为c#中的asp.net。将变量分配给记录集存储过程变量(objRs)时遇到问题。我试着把它设置为
strip=objRs(“strip”)
但这给了我一个关于objRS的错误“应为局部变量ADODB.Recordset objRS-方法委托或事件”

我用括号试过:
strip=objRs[“strip”]
这给了我第二条带上的错误:“不明确索引器:ADODB.Fields(在接口\记录集中);ADODB.Fields(在接口\记录集15中);”“(在接口\记录集20中);”“(在接口\记录集21中);匹配”

我还尝试了各种Convert.ToString方法,但没有成功

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Common" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.EnterpriseServices" %>
<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb.OleDbConnection;  
using ADODB;
<%  

%>
<!DOCTYPE html HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"https://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=8, IE=10, IE=11" />

    <!--The viewport meta tag is used to improve the presentation and behavior on iOS devices--> 

    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <title>My Mapping Application</title>
    <script runat="server">



    private void OpenConnection(string connectionString)
    {
        string txtTaxYear;
        //txtTaxYear;
        string webacct, strap, straptype = null, ownername, facetMap;

        txtTaxYear = Request.Form["ddlTaxYear"].Trim();
        webacct = Request.Form["txtAcct"].Trim();
        nhCd = Request.Form["nh_cd"].Trim();
        nhGrpCd = Request.Form["nh_grp_cd"].Trim();

        //var objConn = null;

        OleDbConnection objConn = new OleDbConnection("Provider=SQLOLEDB; DRIVER={SQL Server};SERVER=XYZserver;UID=xyzuser;PWD=xyzpassword;DATABASE=xyzdatabase\" + (txtTaxYear + \";\")");

        objConn.Open();

        ADODB.Recordset objRs= new ADODB.RecordsetClass();

        //var objRs = Server.CreateObject("ADODB.Recordset");

        // -------------------------------------------------
        // Execute SQL Function to determine Property Type
        // -------------------------------------------------

        ADODB.Recordset rsRci= new ADODB.RecordsetClass();

        //var rsRci = Server.CreateObject("ADODB.Recordset");

        var mysql = ("select h_" + (txtTaxYear + (".dbo.hc_fn_rci(\'" + (webacct + "\') AS rci"))));


        //while (!(rsRci.State == 1))
        while (rsRci.State != (int) ConnectionState.Open)
            rsRci.Open(mysql, objConn);

        while ((!rsRci.BOF) & (!rsRci.EOF))
        {
            straptype == rsRci("rci");
            switch (straptype)
            {
                case null:
                    straptype = "N";
                    break;
                case "":
                    straptype = "B";
                    break;
            }
            rsRci.MoveNext();
        }


        object i;
        object j;
        strap = "";

        if ((straptype == "C"))
        {
            var strSql = ("EXEC hcad..sp_maps_HE_getSubjectAcctInfo \'" + (txtTaxYear + ("\', \'" + (webacct + "\', \'C\'"))));
            objRs.Open(strSql, objConn);
            if (!objRs.EOF)
            {               
                strap = objRs("strap");                
                ownerName = objRs("ownerName");
                siteAddr = objRs("site_addr");
                nhCd = objRs("nh_cd");
                yrImpr = objRs("yr_impr");
                dorCd = objRs("dor_cd");
                facetMap = objRs("facet_map").Substring(0, 4);                
            }
        }


        // -------------------------------------------------
        // Clean Up Objects
        // -------------------------------------------------
        if (rsRci.State == 1)
        {
            rsRci.Close();
        }

        if (objRs.State == 1)
        {
            objRs.Close();
        }


        rsRci = null;
        objRs = null;
        objConn = null;
    }
}

    </script>
</head>

使用系统数据;
使用System.Data.SqlClient;
使用System.Data.OleDb.OleDbConnection;
使用ADODB;
我的地图应用程序
私有void OpenConnection(字符串连接字符串)
{
字符串txtTaxYear;
//txtTaxYear;
字符串webacct,strap,straptype=null,所有者名称,facetMap;
txtTaxYear=Request.Form[“ddlTaxYear”].Trim();
webacct=Request.Form[“txtact”].Trim();
nhCd=Request.Form[“NHU cd”].Trim();
nhGrpCd=Request.Form[“nh_grp_cd”].Trim();
//var objConn=null;
OleDbConnection objConn=新OleDbConnection(“Provider=SQLOLEDB;DRIVER={SQL Server};Server=XYZserver;UID=xyzuser;PWD=xyzpassword;DATABASE=xyzdatabase\”+(txtTaxYear+\;\”);
objConn.Open();
ADODB.Recordset objRs=new ADODB.RecordsetClass();
//var objRs=Server.CreateObject(“ADODB.Recordset”);
// -------------------------------------------------
//执行SQL函数以确定属性类型
// -------------------------------------------------
ADODB.Recordset rsRci=new ADODB.RecordsetClass();
//var rsRci=Server.CreateObject(“ADODB.Recordset”);
var mysql=(“选择h_uxYear+(txtTaxYear+(“.dbo.hc_fn\u rci”(\'”+(webacct+“\')作为rci”)));
//而(!(rsRci.State==1))
while(rsRci.State!=(int)ConnectionState.Open)
Open(mysql,objConn);
而(!rsRci.BOF)和(!rsRci.EOF))
{
straptype==rsRci(“rci”);
开关(straptype)
{
大小写为空:
straptype=“N”;
打破
案例“”:
straptype=“B”;
打破
}
rsRci.MoveNext();
}
对象一;
对象j;
皮带=”;
如果((straptype==“C”))
{
var strSql=(“EXEC hcad..sp_maps_HE_getSubjectAcctInfo\”+(txtTaxYear+(“\”,“\”+(webacct+“\”,“\”));
Open(strSql,objConn);
如果(!objRs.EOF)
{               
皮带=objRs(“皮带”);
ownerName=objRs(“ownerName”);
siteAddr=objRs(“site_addr”);
nhCd=objRs(“NHU cd”);
yrImpr=objRs(“yr_impr”);
dorCd=objRs(“dor_cd”);
facetMap=objRs(“facet_-map”)。子字符串(0,4);
}
}
// -------------------------------------------------
//清理对象
// -------------------------------------------------
如果(rsRci.State==1)
{
rsRci.Close();
}
if(objRs.State==1)
{
objRs.Close();
}
rsRci=null;
objRs=null;
objConn=null;
}
}
2017年7月31日更新:


我已经采纳了Alex和Chetan的建议,重新编写了代码,只使用ADO.Net和SQL连接和命令。我现在可以将变量分配给以前的记录集objRs存储过程变量(现在是SqlCommand)使用SqlDataReader。

我采纳了Alex和Chetan的建议,重新编写了代码,以便仅使用ADO.Net和SQL连接和命令。我现在可以使用SqlDataReader将变量分配给以前的记录集objRs存储过程变量(现在是SqlCommand)。

您使用的是
()
您似乎应该使用
[]
作为索引器。您似乎通过COM和OleDbConnection混合使用ADODB?如果您使用SQL Server,则应坚持使用SqlConnection/SqlCommand等-后者至关重要,因为当前您有一个巨大的SQL注入漏洞。我尝试使用'strap=objRs[“strap”]但我仍然收到一条错误消息。您需要更正课程并为应用程序选择正确的模板,asp.net webforms或asp.net mvc。对于这个特定问题,您最好切换到ADO.net,它具有更好的功能,可以使用SQL server执行数据库操作。