Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中执行ExecuteOnQuery()函数时出错#_C#_Sql_Ms Access 2007 - Fatal编程技术网

C# 在c中执行ExecuteOnQuery()函数时出错#

C# 在c中执行ExecuteOnQuery()函数时出错#,c#,sql,ms-access-2007,C#,Sql,Ms Access 2007,我正在从c#执行一个Insert语句,其中的值是从gui中的TextBox控件提取的 我的数据库中只有两列具有NOTNULL CONSTRAINT 例如:我的insert语句是all areVARCHAR字段,包括ssn和dbate是日期类型 insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun','','','','12345','') 如果输入了所有的值,这可以正常工作,但是当我输入空值时,执行语句时会出现数据不匹配

我正在从c#执行一个Insert语句,其中的值是从gui中的TextBox控件提取的

我的数据库中只有两列具有NOTNULL CONSTRAINT

例如:我的insert语句是all are
VARCHAR
字段,包括ssn和dbate是日期类型

insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun','','','','12345','')
如果输入了所有的值,这可以正常工作,但是当我输入空值时,执行语句时会出现数据不匹配错误,就像上面的语句一样。在sql2005中直接执行sql时,查询可以正常工作

string myInsertQuery = "INSERT INTO Employee (fname,minit,lname,ssn,bdate,address,sex) values  ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";


 OleDbCommand myCommand2 = new OleDbCommand(myInsertQuery, mycon)


myCommand2.ExecuteNonQuery();

如果
dbdate
date
类型,正如您所说,如果
textbox5
中的值不包含适当格式的文本,则出现
类型不匹配错误是正常的。e、 g.“10-12-2011”

如果
dbdate
date
类型,正如您所说,如果
textbox5
中的值不包含适当格式的文本,则出现
类型不匹配错误是正常的。例如“10-12—2011”< /P> < P>也许你应该考虑在某个地方对你的文本框进行验证,以确保它们包含一个适当的值。
(如果它们为空,请确保输入string.empty值或应用程序所需的任何默认值)


很难说清楚,因为你的代码不完整,不能给出更精确的答案。

< P>也许你应该考虑在某处验证你的文本框,以确保它们包含一个适当的值。 (如果它们为空,请确保输入string.empty值或应用程序所需的任何默认值)

否则很难判断,因为您的代码有点不完整,无法给出更精确的答案。

您可能需要尝试:

insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun', NULL, NULL, NULL,'12345', NULL)
检查用户是否键入了一些字符,如“和”-这很容易损坏您的语法

离题但相关:通过直接从文本框获取值,您允许任何人在您的应用程序上注入SQL,因此这是一个缺陷。您可以通过参数化查询来避免这种情况,例如:

SqlCommand cmd = new SqlCommand("select * where Pk = @param1");
cmd.Parameters.Add("@param1", SqlDbType.Int);
cmd.Parameters["@param1"].Value = txtPk.text;
你可能想试试:

insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun', NULL, NULL, NULL,'12345', NULL)
检查用户是否键入了一些字符,如“和”-这很容易损坏您的语法

离题但相关:通过直接从文本框获取值,您允许任何人在您的应用程序上注入SQL,因此这是一个缺陷。您可以通过参数化查询来避免这种情况,例如:

SqlCommand cmd = new SqlCommand("select * where Pk = @param1");
cmd.Parameters.Add("@param1", SqlDbType.Int);
cmd.Parameters["@param1"].Value = txtPk.text;

你有你的c代码的例子吗?表中哪些字段没有空约束?你能粘贴你的代码吗。这样我们就可以看到它了。它的问题是具有空约束。分享你的C#代码。发布代码。调试时,我在myInsertquery中获取字符串,并在salserver上运行它。它工作正常,但我在这里使用的后端是ms Access。你有C#代码的示例吗?表中的哪些字段没有空约束?你可以粘贴你的代码吗。这样我们就可以看到它了。它的问题是具有空约束。分享你的C#代码。发布代码。调试时,我在myInsertquery中获取字符串,并在salserver上运行它。它工作正常,但我在这里使用的后端是ms Access。如果我输入所有值,我不会出错,但如果我不为某些字段(如bdate)输入值,则只会出错。对于可能包含空值的字段,我会输入,当您指定string.empty值或DBNull.value时,应用程序会给出相同的结果?如果我输入所有值,我不会得到错误,但是如果我没有为某些字段(如bdate)输入值,对于可能包含null值的字段,当您指定string.empty值或DBNull.value时,应用程序会给出相同的结果?使用上述参数化示例,您可以说
cmd.Parameters[“@param1”]。value=txtPk.Text==string.empty?DBNull.value:(object)txtPk.Text
标记为空的值。确保调试并监视查询生成的最终sql。使用上述参数化示例,您可以说
cmd.Parameters[“@param1”]。Value=txtPk.Text==string.Empty?DBNull.Value:(object)txtPk.Text
标记为空的值。一定要调试并监视查询生成的最终sql。