2013-04-26 62 views
0

在下面的示例中,我必须输入所有详细信息才能将数据保存到数据库中。是否可以保留一些文本框为空然后使用更新命令参数来填充其余数据?例如插入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中

回答

1

提交前添加一个支票声明:

为如:

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

我正在寻找C#代码。我已经指定了表列所需要的号码。所以你的答案不是我想要的。 – bucketblast 2013-04-26 12:09:07

+0

您在提交空文本框值时是否收到异常?如果是这样,请在此处粘贴错误消息 – 2013-04-26 12:11:05

+0

我收到的错误是“没有给出一个或多个必需参数的值”。 OleDbException未处理 – bucketblast 2013-04-26 12:14:05

0

你需要传递的值来处理错误“没有价值给出针对一个或多个所需参数“。

它可能是DBNull或空字符串。

+0

或者如果您有一些特殊场景请详细解释。 – user2110717 2013-04-26 12:27:43

+0

我正在使用MS Access 2003.所以我需要DBNull OleDB – bucketblast 2013-04-26 12:57:07

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) 
+0

特定的字段名已被设置为必需号。我正在使用MS Access 2003. – bucketblast 2013-04-26 12:58:39

+0

确定您是否尝试格式化您的命令,正如我上面显示的示例? – 2013-04-26 13:06:27

+0

老兄,我告诉过你不要把表格的主键设置为否,否则你的主键不能有数据库中的一行null – 2013-04-26 13:12:51

相关问题