[英]Insert-Statement does not work - no error message
我是這個網站的新手,但我希望你們中的一些人可以通過解決我的問題來幫助我:)
我想通過insert語句在sql-database中保存數據,我已經以相同的方式為另一個表創建了它,它運行良好。 Visual Web Developer不報告錯誤消息,但插入不插入數據。
這是我的一些代碼:
public void saveAnswers()
{
//hier erfolgt das Speichern der Fragen/Antworten in die DB
List<Question> questionlist = (List<Question>)HttpContext.Current.Session["question"];
int SurveyID = GetSurveyId(); //SurveyID ist für alle Response-Datensätze gleich
ArrayList arrAnswerID = new ArrayList();
ArrayList arrText = new ArrayList();
ArrayList arrTextID = new ArrayList();
foreach (Question q in questionlist)
{
switch (q.Type)
{
case 2: //Freitext
if (q.Answers.Count > 0)
{
arrAnswerID.Add(0);
arrText.Add(q.Answers[0].Text);
arrTextID.Add(q.QuestionText[0].TextID);
}
break;
case 3: //Matrixfrage
foreach (QuestionText qt in q.QuestionText)
{
arrAnswerID.Add(qt.SetAnswer.ID);
arrText.Add(qt.SetAnswer.Text);
arrTextID.Add(qt.TextID);
}
break;
default: //Einfachauswahl oder Mehrfachauswahl
foreach (Answer a in q.Answers)
if (a.Set)
{
arrAnswerID.Add(a.ID);
arrText.Add(a.Text);
arrTextID.Add(q.QuestionText[0].TextID);
}
break;
}
//Datenbankzugriff
for (int i = 0; i < arrAnswerID.Count; i++)
{
Command.Connection.Close();
Command = new SqlCommand();
Command.CommandText = "INSERT INTO Response (ResponseID, SurveyID, TextID, AnswerID, Text, Comment) VALUES (@ResponseID, @SurveyID, @TextID, @AnswerID, @Text, @Comment)";
Command.Parameters.AddWithValue("@ResponseID", GetResponseId());
Command.Parameters.AddWithValue("@SurveyID", SurveyID);
Command.Parameters.AddWithValue("@TextID", arrTextID[i]);
Command.Parameters.AddWithValue("@AnswerID", arrAnswerID[i]);
Command.Parameters.AddWithValue("@Text", arrText[i].ToString());
Command.Parameters.AddWithValue("@Comment", "");
Command.CommandType = CommandType.Text;
Command.Connection = conn;
Command.Connection.Open();
Command.ExecuteNonQuery();
Command.Connection.Close();
}
arrAnswerID.Clear();
arrText.Clear();
arrTextID.Clear();
}
}
如果您需要更多信息,請告訴我,我已經期待您的回答。 祝你今天愉快
你可以檢查Command.ExecuteNonQuery()返回什么;
還要調試你可以使用sql profiler 這是一步一步的指導,它會告訴你如果插入語句轉到sql或者沒有
我將以這種方式重寫您的循環代碼
// Local variable SqlCommand
SqlCommand Command = new SqlCommand();
// Text and Comment columns in square brackets, not sure for Comment,
// but Text is a word used by T-SQL
Command.CommandText = "INSERT INTO Response (ResponseID, SurveyID, TextID, " +
"AnswerID, [Text], [Comment]) VALUES (@ResponseID, @SurveyID, " +
"@TextID, @AnswerID, @Text, @Comment)";
// Optimization, create parameters only one time
Command.Parameters.AddWithValue("@ResponseID", -1);
Command.Parameters.AddWithValue("@SurveyID", SurveyID);
Command.Parameters.AddWithValue("@TextID", -1);
Command.Parameters.AddWithValue("@AnswerID", -1]);
Command.Parameters.AddWithValue("@Text", string.Empty);
Command.Parameters.AddWithValue("@Comment", string.Empty);
Command.CommandType = CommandType.Text;
Command.Connection = conn;
Command.Connection.Open();
for (int i = 0; i < arrAnswerID.Count; i++)
{
Command.Parameters["@ResponseID"].Value = GetResponseId();
Command.Parameters["@TextID"].Value = arrTextID[i];
Command.Parameters["@AnswerID"].Value = arrAnswerID[i];
Command.Parameters["@Text"].Value = arrText[i].ToString();
Command.ExecuteNonQuery();
}
Command.Connection.Close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.