點擊按鈕後 Label 顯示「投訴已提交」,但數據庫無新記錄。代碼構建了 `SqlCommand` 卻未執行。
SqlCommand com = new SqlCommand("insert into Table_1 values(mail,contents)values('" + TextBox2.Text + "','" + TextBox1.Text + "') ", con);
Label1.Text = "投訴已提交...";
con.Close();
// 缺少 com.ExecuteNonQuery();
在 `con.Open()` 後、`con.Close()` 前添加執行命令:
con.Open();
SqlCommand com = new SqlCommand("INSERT INTO Table_1 (mail, contents) VALUES (@mail, @content)", con);
// 強烈建議:使用參數化查詢防注入
com.Parameters.AddWithValue("@mail", TextBox2.Text.Trim());
com.Parameters.AddWithValue("@content", TextBox1.Text.Trim());
int rows = com.ExecuteNonQuery(); // <=== 關鍵:執行增刪改
if (rows > 0) {
Label1.Text = "提交成功!";
} else {
Label1.Text = "提交失敗,請重試。";
}
con.Close();
using (SqlConnection con = new SqlConnection(connStr)) {
using (SqlCommand cmd = new SqlCommand(sql, con)) {
cmd.Parameters.AddWithValue("@p", val);
con.Open();
cmd.ExecuteNonQuery();
} // 自動 Close/Dispose
}
`SqlCommand` 僅構建命令,**必須調用 `ExecuteNonQuery()`/`ExecuteScalar()`/`ExecuteReader()` 才會發送給數據庫執行**。這是 ADO.NET 初學者最易忽略的「最後一步」。