【发布时间】:2016-03-02 06:14:15
【问题描述】:
我有一个网页,它在页面上显示了几个不同的网格视图和详细视图。我在网格视图中使用选择列来获取特定的单元格值并将其提供给 asp 标签。我正在尝试从标签中获取值并在我的 sql 查询中使用它,该查询将 'yes' 插入数据库中,基于将哪个值提供给标签,但是在执行查询时我不断收到错误的语法错误。
为了给您提供更多背景信息,我有两种类型的用户,学生和企业。网格视图显示来自学生用户的提交信息,然后商业用户可以选择这些信息作为获胜提交。我输入 asp 标签的列是提交 id 号 (PK),它是数据库中的一个 int。根据提交 ID,业务用户可以选择通过单击启动我的 sql 命令以插入数据库的 asp 按钮将所选提交标记为获胜提交。我不确定使用什么转换方法来完成这项任务。
这是我的代码:
Imports System.Data
Partial Class InteriorBusinessProjectDetails
Inherits System.Web.UI.Page
Dim conn As New Data.SqlClient.SqlConnection("DatabaseConnetionString")
Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
' Get the currently selected row using the SelectedRow property.
Dim row As GridViewRow = GridView1.SelectedRow
lblSelectSubmission.Visible = True
lblSubmission.Visible = True
lblSubmissionID.Visible = True
btnSelect.Visible = True
btnCancel.Visible = True
lblSubmissionID.Text = row.Cells(0).Text
End Sub
Protected Sub btnSelect_Click(sender As Object, e As EventArgs) Handles btnSelect.Click
Dim SubmissionID As String = lblSubmissionID.Text
Dim id As Integer = Convert.ToInt32(Convert.ToDecimal(SubmissionID))
conn.Open()
Dim cmd As New Data.SqlClient.SqlCommand(("INSERT INTO Submissions (Selected) VALUES ('Yes') WHERE SubmissionID=@SubmissionID"), conn)
cmd.Parameters.Add("@SubmissionID", SqlDbType.Int).Value = id
cmd.ExecuteNonQuery()
conn.Close()
lblSubmission.Visible = False
lblSubmissionID.Visible = False
btnSelect.Visible = False
btnCancel.Visible = False
lblSelectSubmission.Visible = True
lblSelectSubmission.Text = "You have successfully chosen a submission for your project!"
End Sub
End Class
这里抛出异常:
cmd.Parameters.Add("@SubmissionID", SqlDbType.Int).Value = id
cmd.ExecuteNonQuery()
这是堆栈跟踪:
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at InteriorBusinessProjectDetails.btnSelect_Click(Object sender, EventArgs e) in C:\Users\richard\Desktop\BRAINbait PLATINUM 11.24.15\InteriorBusinessProjectDetails.aspx.vb:line 32
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
前端的 GUI 带有我从中提取值的标签,以及启动我的 Click 事件的按钮:
<h2 style="margin-left:auto; margin-right:auto; text-align:center; color:#FF9933;"><asp:Label ID="lblSelectSubmission" runat="server" Text="Would you like to choose the following submission for your project?" Visible="false"></asp:Label></h2>
<h2 style="margin-left:auto; margin-right:auto; text-align:center; color:#FF9933;"><asp:Label ID="lblSubmission" runat="server" Text="Submission Number: " Visible="false"></asp:Label><asp:Label ID="lblSubmissionID" runat="server" Text="" Visible="false"></asp:Label></h2>
<center><asp:Button ID="btnSelect" runat="server" Text="Select" CssClass="submit" TabIndex="0" Visible="false" /><asp:Button ID="btnCancel" runat="server" Text="Cancel" CssClass="submit" TabIndex="1" Visible="false" /></center>
【问题讨论】:
标签: sql asp.net vb.net gridview type-conversion