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.
Sie verwenden '()', wo es so aussieht, als sollten Sie '[]' als Indexer verwenden. –
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. –
Ich habe versucht mit 'Strap = ObjRs ["Strap"];' aber ich habe immer noch eine Fehlermeldung erhalten. – MapinTX