2013-04-26 61 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

相關問題