C# 如何在access数据库中插入复选框值?
当我单击submit按钮时,只有第一个复选框值插入数据库???您正在将这些值添加到同一个DB参数C# 如何在access数据库中插入复选框值?,c#,ms-access,checkbox,C#,Ms Access,Checkbox,当我单击submit按钮时,只有第一个复选框值插入数据库???您正在将这些值添加到同一个DB参数@Language。如果希望将它们全部添加到数据库中,请为每个复选框创建单独的字段/参数 另外,假设您选中了所有四个复选框,我希望插入最后一个复选框值,而不是第一个复选框值 但是,从外观上看,是否要将每个复选框的文本值连接到选中它们的位置 您可以通过以下方式实现此效果: OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet
@Language
。如果希望将它们全部添加到数据库中,请为每个复选框创建单独的字段/参数
另外,假设您选中了所有四个复选框,我希望插入最后一个复选框值,而不是第一个复选框值
但是,从外观上看,是否要将每个复选框的文本值连接到选中它们的位置
您可以通过以下方式实现此效果:
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\jay.desai\Documents\Visual Studio 2008\Projects\Test\Test\Test.mdb");
con.Open();
OleDbCommand cmd = new OleDbCommand("insert into EmpTest values(@Emp_No,@Gender,@Language)", con);
cmd.Parameters.AddWithValue("@Emp_No", textBox1.Text);
if (radioButton1.Checked)
{
cmd.Parameters.AddWithValue("@Gender", radioButton1.Text);
}
else
{
cmd.Parameters.AddWithValue("@Gender", radioButton2.Text);
}
if (checkBox1.Checked)
{
cmd.Parameters.AddWithValue("@Language", checkBox1.Text);
}
if (checkBox2.Checked)
{
cmd.Parameters.AddWithValue("@Language", checkBox2.Text);
}
if (checkBox3.Checked)
{
cmd.Parameters.AddWithValue("@Language", checkBox3.Text);
}
if (checkBox4.Checked)
{
cmd.Parameters.AddWithValue("@Language", checkBox4.Text);
}
cmd.ExecuteNonQuery();
con.Close();
这是因为选中多个复选框时覆盖了
@Language
的早期值:
StringBuilder sb = new StringBuilder();
if (checkBox1.Checked)
{
sb.Append(checkBox1.Text);
}
if (checkBox2.Checked)
{
sb.Append(checkBox2.Text);
}
if (checkBox3.Checked)
{
sb.Append(checkBox3.Text);
}
if (checkBox4.Checked)
{
sb.Append(checkBox4.Text);
}
cmd.Parameters.AddWithValue("@Language", sb.ToString());
cmd.Parameters.AddWithValue(“@Emp\u No”,textBox1.Text);
如果(radioButton1.选中)
{
cmd.Parameters.AddWithValue(“@Gender”,radioButton1.Text);
}
其他的
{
cmd.Parameters.AddWithValue(“@Gender”,radioButton2.Text);
}
字符串语言=新列表();
如果(复选框1.选中)
{
语言。添加(复选框1.文本);
}
如果(复选框2.选中)
{
语言。添加(复选框2.文本);
}
如果(复选框3.选中)
{
语言。添加(复选框3.文本);
}
如果(复选框4.选中)
{
语言。添加(复选框4.文本);
}
cmd.Parameters.AddWithValue(“@Language”,string.Join(“,”,languages.ToArray());
cmd.ExecuteNonQuery();
con.Close();
这将插入所有选中的语言,以逗号分隔。如果需要将所有选中的语言写入数据库,则需要使用选中复选框的累积文本生成字符串
cmd.Parameters.AddWithValue("@Emp_No", textBox1.Text);
if (radioButton1.Checked)
{
cmd.Parameters.AddWithValue("@Gender", radioButton1.Text);
}
else
{
cmd.Parameters.AddWithValue("@Gender", radioButton2.Text);
}
string languages = new List<string>();
if (checkBox1.Checked)
{
languages.Add(checkBox1.Text);
}
if (checkBox2.Checked)
{
languages.Add(checkBox2.Text);
}
if (checkBox3.Checked)
{
languages.Add(checkBox3.Text);
}
if (checkBox4.Checked)
{
languages.Add(checkBox4.Text);
}
cmd.Parameters.AddWithValue("@Language", string.Join(",", languages.ToArray());
cmd.ExecuteNonQuery();
con.Close();
相反,如果您只需要一种语言,那么您应该删除复选框控件,并使用一组radiobutton专用控件,就像您对性别字段所做的那样当您达到所需的声誉时(我认为是15),我建议您也对其他答案进行投票,因为我们基本上说的是相同的。
using(OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\jay.desai\Documents\Visual Studio 2008\Projects\Test\Test\Test.mdb"))
using(OleDbCommand cmd = new OleDbCommand("insert into EmpTest values(@Emp_No,@Gender,@Language)", con))
{
con.Open();
cmd.Parameters.AddWithValue("@Emp_No", textBox1.Text);
cmd.Parameters.AddWithValue("@Gender", GetGender());
cmd.Parameters.AddWithValue("@Language", GetLanguages());
cmd.ExecuteNonQuery();
}
private string GetLanguage()
{
StringBuilder result = new StringBuilder();
if (checkBox1.Checked)
result.AppendFormat("{0},", checkBox1.Text);
if (checkBox2.Checked)
result.AppendFormat("{0},", checkBox2.Text);
if (checkBox3.Checked)
result.AppendFormat("{0},", checkBox3.Text);
if (checkBox4.Checked)
result.AppendFormat("{0},", checkBox4.Text);
if(result.Length > 0) result.Lenght--;
return result.ToString();
}
private string GetGender()
{
return (radioButton1.Checked ? radioButton1.Text : radioButton2.Text);
}