C#开发中如何将两个单选按钮值赋值到SQL表的单个Gender列
解决方案
你核心的问题是将两个单选按钮的文本都存为了类属性,同时给数据库的@Gender参数重复赋值导致的,按以下步骤修改即可:
步骤1:修改Student类属性
删除冗余的两个性别属性,替换为单一的Gender属性:
public string StudentName { get; set; } public int Age { get; set; } // 替换原来的Gender_m、Gender_f为单一Gender属性 public string Gender { get; set; } public int Contact { get; set; }
步骤2:修改Dashboard窗体的注册按钮点击逻辑
判断当前选中的单选按钮,将对应文本赋值给Gender属性:
private void Btn_Register_Click(object sender, EventArgs e) { Obj.StudentName = textBox_studentName.Text; Obj.Age = int.Parse(textBox_age.Text); // 判断选中的单选按钮 if (radioButton_male.Checked) { Obj.Gender = radioButton_male.Text; } else if (radioButton_female.Checked) { Obj.Gender = radioButton_female.Text; } // 可选:增加未选性别的拦截提示 else { MessageBox.Show("请选择性别"); return; } Obj.Contact = int.Parse(textBox_contact.Text); bool success = Obj.studentAdd(Obj); if (success) { MessageBox.Show("Saved"); } }
步骤3:修改studentAdd方法的参数赋值逻辑
删除重复的@Gender参数赋值,仅保留一个:
public bool studentAdd(Student obj) { SqlConnection conn = new SqlConnection(myconnstring); bool success = false; try { string sql = "INSERT INTO Students(FullName, Gender, ContactNo, Age) VALUES (@FullName, @Gender, @ContactNo, @Age)"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@FullName", StudentName); // 删除原来的两次@Gender赋值,替换为以下一行 cmd.Parameters.AddWithValue("@Gender", Gender); cmd.Parameters.AddWithValue("@ContactNo", Contact); cmd.Parameters.AddWithValue("@Age", Age); conn.Open(); int row = cmd.ExecuteNonQuery(); success = row > 0; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } return success; }
可选优化建议
- 可以把
int.Parse替换为int.TryParse避免用户输入非数字内容时程序报错 - 数据库连接建议用
using语法自动释放资源,不需要手动写finally关闭连接
内容的提问来源于stack exchange,提问作者mante
相关产品推荐
相关产品推荐

