【发布时间】:2015-09-18 00:08:05
【问题描述】:
我正在尝试在按下按钮时运行 C# 函数,该按钮获得评分 (1-7) 并将其与文本输入一起放入数据库。反馈部分:
<asp:PlaceHolder ID="AnswersPlaceholder" runat="server" Visible="false">
<asp:Literal ID="AnswerLiteral" runat="server"></asp:Literal>
<br />
<br />
<div class="FeedbackTitle">How accurate do you find this result?</div>
<center><p><input class="FeedbackChoice" type="checkbox" value="1" name="feedback" id="F1">Way off!</p></center>
<center><p><input class="FeedbackChoice" type="checkbox" runat="server" value="2" name="feedback" id="F2">Mostly inaccurate</p></center>
<center><p><input class="FeedbackChoice" type="checkbox" runat="server" value="3" name="feedback" id="F3">Somewhat accurate</p></center>
<center><p><input type="text" style="width:40%; border: solid,thick; border-color:blue" name="Note" runat="server" class="FeedbackNote" /></p></center>
<button class="ContinueButton" runat="server" onclick="SubmitFeedback_click">Continue</button>
及其调用的函数:
protected void SubmitFeedback_Click(object sender, EventArgs e)
{
string FeedbackNoteString = "";
string FeedbackButtonString = "";
int UseUserID = 0;
int Feedback = 0;
try
{
UserInfo _currentUser = UserController.Instance.GetCurrentUserInfo();
UseUserID = _currentUser.UserID;
}
catch (OleDbException ex)
{
Console.WriteLine("Error: {0}", ex.Errors[0].Message);
}
finally
{
OleDbConnection bConnection = new OleDbConnection("Driver={SQL Server};Provider=SQLOLEDB........(credentials hidden)");
OleDbCommand DoesFeedbackExistCommand = new OleDbCommand("SELECT * FROM ss_QuizFeedback WHERE UserId = " + UseUserID.ToString(), bConnection);
OleDbDataReader DoesFeedbackExistReader = DoesFeedbackExistCommand.ExecuteReader(); SqlConnection SSSqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString);
SqlCommand FeedbackNoteCommand = SSSqlConnection.CreateCommand();
SqlCommand FeedbackButtonCommand = SSSqlConnection.CreateCommand();
bConnection.Open();
while (DoesFeedbackExistReader.Read())
{
Feedback++;
}
if (Feedback == 0)
{
FeedbackNoteString = "INSERT INTO ss_SoulGoalsQuizFeedback (UserId,SoulGoalsNote) VALUES ("
+ UseUserID.ToString() + ","
+ Request.Form["Note"] + ")";
FeedbackButtonString = "INSERT INTO ss_SoulGoalsFeedback (UserId,Rating) VALUES ("
+ UseUserID.ToString() + ","
+ Request.Form["feedback"].ToString() + ")";
}
else if (Feedback != 0)
{
FeedbackNoteString = "UPDATE ss_SoulGoalsQuizFeedback (UserId,SoulGoalsNote) VALUES ("
+ UseUserID.ToString() + ","
+ Request.Form["Note"] + ")";
}
FeedbackNoteCommand.CommandText = FeedbackNoteString;
FeedbackNoteCommand.ExecuteNonQuery();
FeedbackButtonCommand.CommandText = FeedbackButtonString;
FeedbackButtonCommand.ExecuteNonQuery();
SSSqlConnection.Close();
bConnection.Close();
}
}
当按钮被按下时,页面刷新但不将它们放入数据库。
【问题讨论】:
-
尝试输出您的
INSERT语句以查看您正在调用的内容并在您的数据库上运行它。您的UPDATE查询也不正确。 -
不相关的评论..但避免SQLInjections。
-
这是有史以来最奇怪的代码。你怎么能在后面的网站代码中使用
Console.WriteLine?为什么在你的finally块中发生了这么多事情(应该只包含清理代码)?代码结构可能掩盖了导致失败的异常。
标签: c# html sql asp.net sql-server