使用insert命令参数时,是否可以将一些文本框留空以保存数据

时间:2013-04-26 11:53:07

标签: c# winforms ms-access

在以下示例中,我必须输入所有详细信息以将数据保存在数据库中。是否可以将一些文本框保留为空,然后使用更新命令参数填写其余数据?例如插入ID,AgeGroup,Gender,保留照片和Resume为空并将其保存在Access数据库中?如果你不介意,有人可以提供一个例子。我给你的描述我不知道如何用技术术语来描述?在此先感谢您的帮助。

private void btnInsert_Click(object sender, EventArgs e)
    {

        OleDbCommand cmd = new OleDbCommand(@"INSERT INTO Table1
                                    (ID, AgeGroup, Gender, CriminalOffence, photo, CV)   
                              VALUES(@ID, @AgeGroup, @Gender, @CriminalOffence, @photo, @Resume)", con);
        cmd.CommandType = CommandType.Text;

        cmd.Parameters.AddWithValue("@ID",textBox1.Text);
        cmd.Parameters.AddWithValue("@AgeGroup", comboBox1.Text);
        cmd.Parameters.AddWithValue("@Gender", comboBox2.Text);
        cmd.Parameters.AddWithValue("@CriminalOffence", OleDbType.WChar).Value = str;
        if (pictureBox1.Image != null)
        {
            //using MemoryStream:
            ms = new MemoryStream();
            pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
            byte[] photo_aray = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(photo_aray, 0, photo_aray.Length);
            cmd.Parameters.AddWithValue("@photo", photo_aray);
        }
        cmd.Parameters.AddWithValue("@Resume", richTextBox1.Text);
        con.Open();
        cmd.ExecuteNonQuery();
         con.Close(); 

VS 2010 C# Access 2003

3 个答案:

答案 0 :(得分:1)

在提交前添加一个检查声明:

例如:

 cmd.Parameters.AddWithValue("@ID",  string.IsNullOrEmpty(textBox1.Text.Trim())?  DBNull.Value:textBox1.Text.Trim());

答案 1 :(得分:0)

您需要传递值来处理错误“没有给出一个或多个必需参数的值”。

它可能是DBNull或空字符串。

答案 2 :(得分:0)

您是否已将allow null属性设置为true,以便您稍后要在数据库中更新这些列?如果不这样做,你的当前代码将正常工作,我猜..

string command = stirng.Format("INSERT INTO Table1(ID, AgeGroup) VALUES ({0},{1})",TextBox1.Text,ComboBox1.Text)
OleDbCommand cmd = new OleDbCommand(command, con)