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