我有一个方法从文本框中获取值并将它们插入到数据库中。 如何仅从已输入文本的文本框中解析值?
例如,如果textbox 4,5 6为空,那么我不希望将它们解析为insert方法。
这是我写的将一个答案插入数据库的内容。如何修改它以仅包含那些非null的文本框?
<div id="answer_wrapper">
<div class="answer">
<h3 class="new">Answer 1</h3>
<asp:TextBox ID="AnswerBox1" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answer">
<h3 class="new">Answer 2</h3>
<asp:TextBox ID="AnswerBox2" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answer">
<h3 class="new">Answer 3</h3>
<asp:TextBox ID="AnswerBox3" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answer">
<h3 class="new">Answer 4</h3>
<asp:TextBox ID="AnswerBox4" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answer">
<h3 class="new">Answer 5</h3>
<asp:TextBox ID="AnswerBox5" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answer">
<h3 class="new">Answer 6</h3>
<asp:TextBox ID="AnswerBox6" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
protected void FinishQnrButton_Click(object sender, EventArgs e)
{
int QuestionnaireId = (int)Session["QuestionnaireID"];
SendData = new OsqarSQL();
int questionId = SendData.InsertQuestions(QuestionName.Text, Int32.Parse(QuestnType.SelectedValue), QuestionnaireId);
int answerId = SendData.InsertAnswer(AnswerBox1.Text, questionId, QuestionnaireId);
Response.Redirect("~/buildq/Confirm_Questionnaire.aspx");
} // End NewQNRButton_Click
public int InsertAnswer(string AnswerTitle, int QuestionID, int QuestionnaireID)
{
int returnValue = 0;
SqlCommand myCommand = new SqlCommand("NewAnswer", _productConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@ANSWERTITLE", SqlDbType.NVarChar));
myCommand.Parameters.Add(new SqlParameter("@QUESTION_ID", SqlDbType.Int));
myCommand.Parameters.Add(new SqlParameter("@QUEST_ID", SqlDbType.Int));
myCommand.Parameters.Add("@ANSWER_ID", SqlDbType.Int, 0, "ANSWER_ID");
myCommand.Parameters["@ANSWER_ID"].Direction = ParameterDirection.Output;
myCommand.Parameters[0].Value = AnswerTitle;
myCommand.Parameters[1].Value = QuestionID;
myCommand.Parameters[2].Value = QuestionnaireID;
_productConn.Open();
myCommand.ExecuteNonQuery();
returnValue = (int)myCommand.Parameters["@ANSWER_ID"].Value;
_productConn.Close();
return returnValue;
}
答案 0 :(得分:3)
从技术上讲,TextBox.Text
属性永远不会是null
。如果表单中没有值,则为string.Empty
。
您可以使用以下内容测试空字符串:
if (!string.IsNullOrEmpty(AnswerBox1.Text))
int answerId = SendData.InsertAnswer(AnswerBox1.Text, questionId, QuestionnaireId);
请注意,我并非完全确定您的总体目标是什么。也许我错过了什么。 声音就像你问的是如何检查每个TextBox
的空值并对那些具有非空值的插值执行插入。所以我想你会做几次类似的事情。还有其他方法可以做到这一点,你可以将它们全部包装在辅助方法中等等。但一般来说,你只是根据业务规则测试“不可插入”的值。