【发布时间】:2021-11-02 06:11:03
【问题描述】:
我正在尝试使用一个小表单收集用户的数据并将这些数据插入到 Student 表 (db) 的列中。我可以插入除用户性别之外的所有信息,为此我使用了两个单选按钮(radioButton_male 和 radioButton_female)。
这是我使用的 C# 代码: 仪表板表单:
private void Btn_Register_Click(object sender, EventArgs e)
{
Obj.StudentName = textBox_studentName.Text;
Obj.Age = int.Parse(textBox_age.Text);
Obj.Gender_m = radioButton_male.Text;
Obj.Gender_f = radioButton_female.Text;
Obj.Contact = int.Parse(textBox_contact.Text);
bool success = Obj.studentAdd(Obj);
if (success)
{
MessageBox.Show("Saved");
}
}
学生班
public string StudentName { get; set; }
public int Age { get; set; }
public string Gender_m { get; set; }
public string Gender_f { get; set; }
public int Contact { get; set; }
_
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);
cmd.Parameters.AddWithValue("@Gender", Gender_m);
cmd.Parameters.AddWithValue("@Gender", Gender_f);
cmd.Parameters.AddWithValue("@ContactNo", Contact);
cmd.Parameters.AddWithValue("@Age", Age);
conn.Open();
int row = cmd.ExecuteNonQuery();
if (row > 0)
{
success = true;
}
else
{
success = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
} finally
{
conn.Close();
}
return success;
}
我知道我不能简单地将两个条目分配给单个列,但我无法使用 If Else 或任何其他方式正确设置它。希望您能提供帮助。谢谢。
【问题讨论】:
-
提示 2:性别应该是单个列/属性,而不是多个。如果您正确使用单选按钮,它们将绑定到单个属性。
-
1.现在看来 SqlParameterCollection.Add 方法已经贬值了 2. 正确的使用方法是什么?
-
cmd.Parameters.Add("@FullName", SqlDbType.VarChar, 100).Value = StudentName;- 此重载不已弃用,它是设置参数及其值的首选最佳实践方式 -
更多提示:连接和命令对象应该在
using块中。不要在连接打开时使用 MessageBox 阻塞线程。不要将年龄存储在数据库中,您必须每年更新它,而是存储出生日期并从中计算年龄
标签: c# sql sql-server database design-view