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

C# 使用insert命令参数时,是否可以将某些文本框留空以保存数据,c#,winforms,ms-access,C#,Winforms,Ms Access,在下面的示例中,我必须输入所有详细信息才能将数据保存到数据库中。是否可以保留一些文本框为空,保存它,然后使用Update命令参数填写其余数据?例如,插入ID、年龄组、性别、保留照片和简历为空并将其保存在Access数据库中?如果你不介意的话,有人能举个例子吗。我给你的描述我不知道如何用技术术语来描述?提前感谢您的帮助 private void btnInsert_Click(object sender, EventArgs e) { OleDbCommand cmd =

在下面的示例中,我必须输入所有详细信息才能将数据保存到数据库中。是否可以保留一些文本框为空,保存它,然后使用Update命令参数填写其余数据?例如,插入ID、年龄组、性别、保留照片和简历为空并将其保存在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

在提交前添加检查语句:

例如:

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

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


它可能是DBNull或空字符串。

是否已将数据库中稍后要更新的列的
允许null
属性设置为
true
?如果不这样做,我想你当前的代码会工作得很好

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

我在找C代码。我已将表列指定为“否”。因此,您的答案不是我想要的答案。您在提交空文本框值时是否遇到异常?如果是这样,请将错误消息粘贴到此处。我得到的错误是“没有为一个或多个必需参数提供值”。OLEDBEException为unhandled@Parveen-看起来好多了,但我错了。。。无法确定条件表达式的类型,因为'System.DBNull'和'string'之间没有隐式转换?然后尝试将string.Empty或'0'作为ID字段而不是DBNull.Valuer。或者,如果您有一些特殊情况,请解释更多。我使用的是MS Access 2003。因此,我需要将OleDBspecific fieldname的DBNull设置为必需的否。我正在使用MS Access 2003。好的,您是否尝试按照上面的示例格式化您的命令?Dude我告诉过您不要将表的主键的必需设置为否。。。数据库中不能有主键为空的行。我会试试你的方法。请容忍我