- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 System.Data.OleDb 命名空间和方法 OleDbCommandObject.ExecuteNonQuery() 将数据插入到 Access 数据库中,但我收到如下错误:
The OleDbParameterCollection only accepts non-null OleDbParameter type objects. Parameter name: value
和
Parameter ? _[#] has no default value
我的大部分参数都是字符串对象,当通过表单为它们分配值时,它们可以正常工作。但是,当一个非必填字段留空(即 someString = "")并提交表单时,就会发生错误。我在这个网站和其他提到可能解决方案的网站上四处寻找答案,例如:
我可以将字符串的值设置为“[space]”,但这会删除表单中的占位符,这并不理想,而且我认为没有必要。如果我必须在将值添加到参数列表之前检查空字符串并添加空格,那么我会这样做,但我希望尽可能避免额外的代码。
这是我使用的代码示例:
Customer.cs
public class Customer
{
[Required]
public string ContactFirstName { get; set; }
[Required]
public string ContactLastName { get; set; }
public string Email {get; set; }
public string Phone {get; set; }
public Customer()
{
this.ContactFirstName = "";
this.ContactLastName = "";
this.Email = "";
this.Phone = "";
}
}
用于插入数据的方法
public int InsertValues(Customer customer)
{
this.dbConn.Open(); //System.Data.OleDb.OleDbConnection
this.query = "INSERT INTO someTable (ContactFirstName, ContactLastName, Email, Phone) VALUES (?,?,?,?)";
this.dbComm = new OleDbCommand(this.query, this.dbConn); //System.Data.OleDb.OleDbCommand
//Add parameters
this.dbComm.Parameters.AddWithValue("ContactFirstName", customer.ContactFirstName);
this.dbComm.Parameters.AddWithValue("ContactLastName", customer.ContactLastName);
this.dbComm.Parameters.AddWithValue("Email", customer.Email);
this.dbComm.Parameters.AddWithValue("Phone", customer.Phone);
this.dbComm.ExecuteNonQuery();
//--Snip--
}
我使用的 ODBC 驱动程序是 Microsoft.OleDb.ACE.12.0。任何可以引导我走向正确方向的帮助或信息将不胜感激。
最佳答案
改变这个
public int InsertValues(Customer customer)
{
this.dbConn.Open(); //System.Data.OleDb.OleDbConnection
this.query = "INSERT INTO someTable (ContactFirstName, ContactLastName, Email, Phone) VALUES (@ContactFirstName,@ContactLastName,@Email,@Phone)";
this.dbComm = new OleDbCommand(this.query, this.dbConn); //System.Data.OleDb.OleDbCommand
//Add parameters
this.dbComm.Parameters.AddWithValue("@ContactFirstName", customer.ContactFirstName);
this.dbComm.Parameters.AddWithValue("@ContactLastName", customer.ContactLastName);
this.dbComm.Parameters.AddWithValue("@Email", customer.Email);
this.dbComm.Parameters.AddWithValue("@Phone", customer.Phone);
this.dbComm.ExecuteNonQuery();
//--Snip--
}
关于c# - 将空字符串添加到参数列表以插入到 AccessDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096124/
我正在尝试使用 System.Data.OleDb 命名空间和方法 OleDbCommandObject.ExecuteNonQuery() 将数据插入到 Access 数据库中,但我收到如下错误:
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有一个带有几个文本框的网页;以及一个包含数字数据、日期和用户 ID 列的 Access 数据库。 我需要帮助对日期 >= 1/1/2013 的列进行求和。可以说我无法在当前的设置中使用服务器端脚本。
我的网站出现问题。我目前有一份申请表并提交了该表格,并发送了一封电子邮件。我希望我可以创建一个 csv 文件来发送表单。其次,通过此 CSV 文件自动填充我的数据库访问权限。 我的 ASP 表单:
我是一名优秀的程序员,十分优秀!