ajuda
Intento introducir datos a una base de datos des de un formulario y siempre falla el ExecuteNonQuery, cual es el problema???
<%@ Page Explicit="True" Language="VB" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<Script Runat="Server">
Sub Page_Load( s As Object, e As EventArgs )
If Not isPostBack Then
BindData
End If
End Sub
Sub BindData
Dim MessageConnection As OleDbConnection
Dim MessageCommand As OleDbCommand
MessageConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\inetpub\wwwroot\forum_ara_si\bdforum.mdb")
MessageConnection.Open()
MessageCommand = New OleDbCommand( _
"Select MessageID, Subject, Message, " & _
"Author, Posted From Messages Where " & _
"Thread=" & Request.QueryString("ThreadID") & _
" Order By Posted", MessageConnection )
MessageRepeater.DataSource = _
MessageCommand.ExecuteReader()
MessageRepeater.DataBind()
MessageConnection.Close()
End Sub
Sub PostClick( obj As Object, e As EventArgs )
Dim MessageConnection As OleDbConnection
Dim MessageCommand As OleDbCommand
Dim InsertString as string
Dim Message As String
MessageConnection = _
New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\inetpub\wwwroot\forum_ara_si\bdforum.mdb")
InsertString = "Insert Into Messages (Subject, Message, " & _
"Author, Posted, Thread) VALUES (@Subject, @Message, " & _
"@Author, @Posted, @ThreadID)"
MessageCommand = _
New OleDbCommand(InsertString, MessageConnection)
MessageCommand.Parameters.Add( _
New OleDbParameter("@Subject", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Message", OleDbType.LongVarchar))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Author", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Posted", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@ThreadID", OleDbType.Varchar,50))
Message = MessageText.Text
Message = Replace(Message, CStr(chr(13)), "<br>")
MessageCommand.Parameters("@Subject").Value = SubjectText.Text
MessageCommand.Parameters("@Message").Value = Message
MessageCommand.Parameters("@Author").Value = AuthorText.Text
MessageCommand.Parameters("@Posted").Value = CStr(Now)
MessageCommand.Parameters("@ThreadID").Value = CInt(Request.QueryString("ThreadID"))
MessageConnection.Open()
MessageCommand.ExecuteNonQuery
MessageConnection.Close()
SubjectText.Text = ""
MessageText.Text = ""
AuthorText.Text = ""
BindData
End Sub
</Script>
<html>
<head><title>Chatty Messages</title></head>
<body>
<font face="arial">
<h1><font color="DarkRed">
Chatty Discussion Forum messatges</font></h1>
<a href="threads.aspx?TopicID=
<%=Request.QueryString("TopicID")%>
&TopicName=<%=Request.QueryString("TopicName")%>">
<font size="5"><u>
<%=Request.QueryString("TopicName") & _
"</a></u> : <u>" & _
Request.QueryString("ThreadName") %>
</font></u>
<form Runat="Server" ID="Form1">
<asp:Repeater
id="MessageRepeater"
Runat="Server">
<ItemTemplate>
<table width="100%" border="1" cellspacing="0"
cellpadding="3" bordercolor="DarkBlue">
<tr bgcolor="DarkBlue"><td>
<font color="White" face="arial"><b>
<%# Container.DataItem("Subject") %></b></font>
</td>
<td align="right" >
<font color="White" face="arial" size="1">
<%# Container.DataItem("Posted") %></font><br/>
</td></tr><tr><td colspan="2">
<font face="arial" size="2">
<%# Container.DataItem("Message") %><br />
<i><%# Container.DataItem("Author") %></i></font>
</td></tr>
</table><br>
</ItemTemplate>
</asp:Repeater>
<table width="100%" border="1" cellspacing="0"
cellpadding="3" bordercolor="DarkBlue">
<tr><td bgcolor="LightGrey">
<p>To post a new message to this thread, type your
message below and click Post.</p>
<p><font size="2">Subject:</font><br/>
<asp:textbox id="SubjectText" runat="server"
columns="50"/></p>
<p><font size="2">Message:</font><br />
<asp:textbox id="MessageText" runat="server"
textmode="multiline"
columns="50" rows="3"/></p>
<p><font size="2">Your Email Address:</font><br />
<asp:textbox id="AuthorText" runat="server"
columns="50"/></p>
<center>
<asp:button runat="server" text=" Post "
onclick="PostClick" ID="Button1" NAME="Button1"/><br />
</center>
</td></tr></table>
<br />
<a href="threads.aspx?TopicID=
<%=Request.QueryString("TopicID")%>
&TopicName=<%=Request.QueryString("TopicName")%>">
Return to <b><%=Request.QueryString("TopicName") %>
</b> Threads</a><br>
<a href="topics.aspx">
Return to list of <b>Topics</b></a>
</form>
</font>
</body>
</html>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<Script Runat="Server">
Sub Page_Load( s As Object, e As EventArgs )
If Not isPostBack Then
BindData
End If
End Sub
Sub BindData
Dim MessageConnection As OleDbConnection
Dim MessageCommand As OleDbCommand
MessageConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\inetpub\wwwroot\forum_ara_si\bdforum.mdb")
MessageConnection.Open()
MessageCommand = New OleDbCommand( _
"Select MessageID, Subject, Message, " & _
"Author, Posted From Messages Where " & _
"Thread=" & Request.QueryString("ThreadID") & _
" Order By Posted", MessageConnection )
MessageRepeater.DataSource = _
MessageCommand.ExecuteReader()
MessageRepeater.DataBind()
MessageConnection.Close()
End Sub
Sub PostClick( obj As Object, e As EventArgs )
Dim MessageConnection As OleDbConnection
Dim MessageCommand As OleDbCommand
Dim InsertString as string
Dim Message As String
MessageConnection = _
New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\inetpub\wwwroot\forum_ara_si\bdforum.mdb")
InsertString = "Insert Into Messages (Subject, Message, " & _
"Author, Posted, Thread) VALUES (@Subject, @Message, " & _
"@Author, @Posted, @ThreadID)"
MessageCommand = _
New OleDbCommand(InsertString, MessageConnection)
MessageCommand.Parameters.Add( _
New OleDbParameter("@Subject", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Message", OleDbType.LongVarchar))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Author", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@Posted", OleDbType.Varchar,50))
MessageCommand.Parameters.Add( _
New OleDbParameter("@ThreadID", OleDbType.Varchar,50))
Message = MessageText.Text
Message = Replace(Message, CStr(chr(13)), "<br>")
MessageCommand.Parameters("@Subject").Value = SubjectText.Text
MessageCommand.Parameters("@Message").Value = Message
MessageCommand.Parameters("@Author").Value = AuthorText.Text
MessageCommand.Parameters("@Posted").Value = CStr(Now)
MessageCommand.Parameters("@ThreadID").Value = CInt(Request.QueryString("ThreadID"))
MessageConnection.Open()
MessageCommand.ExecuteNonQuery
MessageConnection.Close()
SubjectText.Text = ""
MessageText.Text = ""
AuthorText.Text = ""
BindData
End Sub
</Script>
<html>
<head><title>Chatty Messages</title></head>
<body>
<font face="arial">
<h1><font color="DarkRed">
Chatty Discussion Forum messatges</font></h1>
<a href="threads.aspx?TopicID=
<%=Request.QueryString("TopicID")%>
&TopicName=<%=Request.QueryString("TopicName")%>">
<font size="5"><u>
<%=Request.QueryString("TopicName") & _
"</a></u> : <u>" & _
Request.QueryString("ThreadName") %>
</font></u>
<form Runat="Server" ID="Form1">
<asp:Repeater
id="MessageRepeater"
Runat="Server">
<ItemTemplate>
<table width="100%" border="1" cellspacing="0"
cellpadding="3" bordercolor="DarkBlue">
<tr bgcolor="DarkBlue"><td>
<font color="White" face="arial"><b>
<%# Container.DataItem("Subject") %></b></font>
</td>
<td align="right" >
<font color="White" face="arial" size="1">
<%# Container.DataItem("Posted") %></font><br/>
</td></tr><tr><td colspan="2">
<font face="arial" size="2">
<%# Container.DataItem("Message") %><br />
<i><%# Container.DataItem("Author") %></i></font>
</td></tr>
</table><br>
</ItemTemplate>
</asp:Repeater>
<table width="100%" border="1" cellspacing="0"
cellpadding="3" bordercolor="DarkBlue">
<tr><td bgcolor="LightGrey">
<p>To post a new message to this thread, type your
message below and click Post.</p>
<p><font size="2">Subject:</font><br/>
<asp:textbox id="SubjectText" runat="server"
columns="50"/></p>
<p><font size="2">Message:</font><br />
<asp:textbox id="MessageText" runat="server"
textmode="multiline"
columns="50" rows="3"/></p>
<p><font size="2">Your Email Address:</font><br />
<asp:textbox id="AuthorText" runat="server"
columns="50"/></p>
<center>
<asp:button runat="server" text=" Post "
onclick="PostClick" ID="Button1" NAME="Button1"/><br />
</center>
</td></tr></table>
<br />
<a href="threads.aspx?TopicID=
<%=Request.QueryString("TopicID")%>
&TopicName=<%=Request.QueryString("TopicName")%>">
Return to <b><%=Request.QueryString("TopicName") %>
</b> Threads</a><br>
<a href="topics.aspx">
Return to list of <b>Topics</b></a>
</form>
</font>
</body>
</html>
La operación debe usar una consulta actualizable.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Data.OleDb.OleDbException: La operación debe usar una consulta actualizable.
Error de código fuente:
Línea 66:
Línea 67: MessageConnection.Open()
Línea 68: MessageCommand.ExecuteNonQuery
Línea 69: MessageConnection.Close()
Línea 70:
Archivo de origen: c:inetpubwwwrootforum_ara_siMessages.aspx Línea: 68
Seguimiento de la pila:
[OleDbException (0x80004005): La operación debe usar una consulta actualizable.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
ASP.Messages_aspx.PostClick(Object obj, EventArgs e) in c:inetpubwwwrootforum_ara_siMessages.aspx:68
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
Información de versión: Versión de Microsoft .NET Framework:1.1.4322.573; Versión de ASP.NET:1.1.4322.573
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Data.OleDb.OleDbException: La operación debe usar una consulta actualizable.
Error de código fuente:
Línea 66:
Línea 67: MessageConnection.Open()
Línea 68: MessageCommand.ExecuteNonQuery
Línea 69: MessageConnection.Close()
Línea 70:
Archivo de origen: c:inetpubwwwrootforum_ara_siMessages.aspx Línea: 68
Seguimiento de la pila:
[OleDbException (0x80004005): La operación debe usar una consulta actualizable.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
ASP.Messages_aspx.PostClick(Object obj, EventArgs e) in c:inetpubwwwrootforum_ara_siMessages.aspx:68
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
Información de versión: Versión de Microsoft .NET Framework:1.1.4322.573; Versión de ASP.NET:1.1.4322.573