數據庫表 customer 的 customer_name 字段類型為 varchar,但插入包含字母、符號的字符串(如 "lly.sfa")失敗,純數字字符串(如 "54215642")卻能成功插入。
string sqlupdata = "insert into customer(customer_id,customer_name,customer_password,customer_phone,customer_level) values(" + id + "," + phonenumber + "," + username + "," + password + "," + "5) ";
SQL 拼接時字符串值缺少單引號包裹。
username = "54215642" 時,生成 SQL:... values(..., 54215642, ...) ... → 數據庫隱式轉換為字符串,插入成功username = "lly.sfa" 時,生成 SQL:... values(..., lly.sfa, ...) ... → 數據庫嘗試解析 lly.sfa 為標識符/列名,語法報錯string sqlupdata = "insert into customer(customer_id,customer_name,customer_password,customer_phone,customer_level) values("
+ id + ",'" + phonenumber + "','" + username + "','" + password + "'," + "5) ";
所有字符串類型字段值必須用單引號括起來。
string sql = "INSERT INTO customer (customer_id, customer_name, customer_password, customer_phone, customer_level) VALUES (@id, @name, @pwd, @phone, 5)";
using (SqlCommand cmd = new SqlCommand(sql, conn)) {
cmd.Parameters.AddWithValue("@id", id);
cmd.Parameters.AddWithValue("@name", username);
cmd.Parameters.AddWithValue("@pwd", password);
cmd.Parameters.AddWithValue("@phone", phonenumber);
cmd.ExecuteNonQuery();
}
優勢:
TextBox3.Text. 和 TextBox4.Text.() 有語法錯誤(多餘的點)Random 實例化在循環/高頻調用中應聲明為 static 或單例,避免種子相同生成重複 IDthrow; 會丟棄堆棧信息,建議記錄日誌後拋出自定義異常問題核心在於 SQL 拼接忽略字符串單引號。改用參數化查詢可一次性解決語法錯誤、注入風險與類型轉換問題。