2017-07-11 4 views
0

Ich konvertiere vorherige klassische asp in vb-Code zu asp.net in C#. Ich habe Probleme beim Zuweisen einer Variablen zu der gespeicherten Prozedurvariable Recordset (objRs). Ich habe versucht, es nach oben wie strap = objRs("strap"); Einstellung aber das gibt mir einen Fehler auf objRS „lokal Variable ADODB.Recordset objRS - Methode Delegierter oder Ereignis erwartet wird“C# Deklaration der Recordset-Variablen, die der Zeichenfolge aus der gespeicherten Prozedur entspricht

Ich habe es mit Klammern versucht: strap = objRs["strap"]; das gibt mir der Fehler auf dem zweiten Riemen "Mehrdeutige Indexer: ADODB.Fields Fields (in interface_Recordset); ADODB.Fields Fields (in interface_Recordset15), ""(in interface_Recordset20), ""(in interface_Recordset21); entsprechen"

ich habe hat auch verschiedene Convert.ToString-Methoden ausprobiert, war aber nicht erfolgreich.

<%@ 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> 

-Update 7/31/17:

ich den Rat von Alex und Chetan genommen und neu geschrieben, um den Code nur ADO.Net mit SQL-Verbindungen und Befehle zu verwenden. Ich kann jetzt Variablen der gespeicherten Prozedurvariable objRs (jetzt ein SqlCommand) mit SqlDataReader zuweisen.

+0

Sie verwenden '()', wo es so aussieht, als sollten Sie '[]' als Indexer verwenden. –

+1

Sie scheinen ADODB über COM & OleDbConnection zu mischen? Wenn Sie SQL Server verwenden, sollten Sie sich an SqlConnection/SqlCommand etc. halten - Letzteres ist wichtig, da Sie derzeit eine große SQL Injection-Schwachstelle haben. –

+0

Ich habe versucht mit 'Strap = ObjRs ["Strap"];' aber ich habe immer noch eine Fehlermeldung erhalten. – MapinTX

Antwort

0

Ich habe den Rat von Alex und Chetan genommen und den Code neu geschrieben, um nur ADO.Net mit SQL-Verbindungen und Befehlen zu verwenden. Ich kann jetzt Variablen der gespeicherten Prozedurvariable objRs (jetzt ein SqlCommand) mit SqlDataReader zuweisen.

Verwandte Themen