Benutzer mit den meisten Antworten
ASP.NET ODBC SQLBase - System.AccessViolationException

Frage
-
Hallo.
ich bin dabei eine ASP.NET Webseite zu erstellen, bei der durch Angabe einer Suchmaske Einträge aus einer SQLBase (Unify) Datenbank ausgelesen werden. Die Datenbank enthält eine Tabelle Namens "Kunde". Durch Angabe des Namens soll der Anwender die Möglichkeit haben einen bestimmten Kunden zu suchen.
Via ODBC verbinde ich mich mit der SQLBase Datenbank. Dies funktioniert auch einwandfrei. Ich kann alle Kunden oder auch nur Kunden mit gesuchtem Namen ausgeben. Wenn ich in Visual Web Developer Express die Webseite starte (Button: "In Browser anzeigen"), dann stürzt nach einer Weile (manchmal nach 2 suchanfragen, manchmal 3 oder 4) der Server ab. Folgendes Fenster wird angezeigt:
___________________________________
Titel: WebDev.WebServer40.exe
Nachricht: WebDev.WebServer40.exe funktioniert nicht mehr - Es wird nach einer Lösung für das Problem gesucht.
___________________________________
Es wird allerdings keine Lösung gefunden.
Wenn ich die Webseite auf meinen WebServer hochlade und dort die Anwendung ausführe kommt folgende Meldung:
Serverfehler in der Anwendung /.
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig Hinweis darauf, dass anderer Speicher beschädigt ist.
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.
Ausnahmedetails: System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
Quellfehler:
gv_GridView1.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
gv_GridView1.DataBind();
conODBC.Close();
Quelldatei: c:\inetpub\wwwroot\search_using.aspx.cs Zeile: 40
Stapelüberwachung:
[AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.] System.Data.Common.UnsafeNativeMethods.SQLGetData(OdbcStatementHandle StatementHandle, UInt16 ColumnNumber, SQL_C TargetType, CNativeBuffer TargetValue, IntPtr BufferLength, IntPtr& StrLen_or_Ind) +0 System.Data.Odbc.OdbcStatementHandle.GetData(Int32 index, SQL_C sqlctype, CNativeBuffer buffer, Int32 cb, IntPtr& cbActual) +30 System.Data.Odbc.OdbcDataReader.GetData(Int32 i, SQL_C sqlctype, Int32 cb, Int32& cbActualOut) +89 System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i) +93 System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap) +72 System.Data.Odbc.OdbcDataReader.GetValue(Int32 i) +57 System.Data.Odbc.OdbcDataReader.GetValues(Object[] values) +62 System.Data.Common.DbEnumerator.MoveNext() +69 System.Web.UI.WebControls.GridView.CreateAutoGeneratedColumns(PagedDataSource dataSource) +284 System.Web.UI.WebControls.GridView.CreateColumns(PagedDataSource dataSource, Boolean useDataSource) +418 System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +640 System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57 System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) +14 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73 System.Web.UI.WebControls.GridView.DataBind() +4 search.search_button_OnClick(Object sender, EventArgs e) in c:\inetpub\wwwroot\search_using.aspx.cs:40 System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +108 System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +118 System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
_____________________________________________________________
Mein Code sieht wie folgt aus:
search_using.aspx.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data.Odbc;
using System.Data;
public partial class search : System.Web.UI.Page
{
string connectionString;
OdbcConnection conODBC;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void search_button_OnClick(object sender, EventArgs e)
{
connectionString = WebConfigurationManager.ConnectionStrings["SQLBaseODBC2"].ConnectionString;
conODBC = new OdbcConnection(connectionString);
try
{
string sql = "SELECT NAME, VORNAME FROM PREQUITY.KUNDE WHERE (NAME = 'Maierhuber')";
OdbcCommand cmd = new OdbcCommand(sql, conODBC);
conODBC.Open();
l_lblInfo.Text = "Conn successful";
gv_GridView1.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
gv_GridView1.DataBind();
}
catch (Exception err)
{
l_lblInfo.Text = "Error reading database. " + err.Message;
}
finally
{
conODBC.Close();
}
}
}
Connectionstring:
<add name="SQLBaseODBC2" connectionString="Dsn=O_PREQ;db=PREQ;uid=sysadm;isolevel=RL;Min Pool Size=10"/>
search_using.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="MainWindow" Runat="Server"> <div class="toolbar"> <asp:ImageButton ID="toolbar_search" ImageUrl="~/Shared/Images/toolbar/pb_suchen.bmp" runat="server" OnClick="search_button_OnClick" /> </div> <div class="firstRowPanel"> <!-- Name --> <asp:Label ID="l_Name_desc" Text="Name" runat="server" /> <asp:TextBox ID="tb_Name_field" Text="" runat="server" CssClass="firstRow" /><br /> <div> <asp:Label id="l_lblInfo" Text="" runat="server" /> </div> <div class="search_table"> <asp:datagrid id="dg_DataGrid1" runat="server" CssClass = "StandardTable" EnableViewState="False"> <ItemStyle backcolor="white"></ItemStyle> </asp:datagrid> <asp:GridView ID="gv_GridView1" runat="server"> </asp:GridView> </div> </asp:Content>
Ich habe bereits danach gegoogled, aber nichts hilfreiches gefunden. Zudem habe ich verschiedene SQLBefehle ausgeführt.
Ich kann mir nicht erlären warum ASP.NET abstürzt bzw diese Fehlermeldung anzeigt. Kann mir jemand helfen?
Vielen Dank im voraus
LG CS
Antworten
-
Hi,
Via ODBC verbinde ich mich mit der SQLBase Datenbank. Dies funktioniert auch einwandfrei. Ich kann alle Kunden oder auch nur Kunden mit gesuchtem Namen ausgeben. Wenn ich in Visual Web Developer Express die Webseite starte (Button: "In Browser anzeigen"), dann stürzt nach einer Weile (manchmal nach 2 suchanfragen, manchmal 3 oder 4) der Server ab. Folgendes Fenster wird angezeigt:
ich würde auf den verwendeten ODBC Treiber tippen. Welchen nehmt ihr da?
Lt. Herstellerwebsite soll es wohl einen .NET Provider für das verwendete DBMS geben. Warum nehmt ihr nicht den?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 28. Oktober 2010 15:02