大家好,我是wpf的新手。所以我遇到了问题。如果你帮助我,我会很高兴的。提前感谢大家。
我的问题是,无法在wpf中插入数据库内的名称。我该怎么办呢?我的代码如下;
private void button1_Click(object sender, RoutedEventArgs e)
{
try
{
string SqlString = "Insert Into UserInformation(name) Values (?)";
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Cell.mdb;Persist Security Info=True"))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("name", textBox1.Text);
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{ }
}
答案 0 :(得分:0)
尝试使用cmd.Parameters.AddWithValue("@name", textBox1.Text);
答案 1 :(得分:0)
是否打开了正确的数据库文件?正如人们在评论中建议的那样,设置Visual Studio以打破第一次机会异常,或者删除异常处理。数据库文件需要存在,您需要相应的JET驱动程序。
我已经尝试过你的代码,它在这里没有任何问题(在WPF应用程序中或其他方面)。使用命名参数而不是问号是一个很好的建议,但它似乎不是问题。 (我安装了Office 2007和.NET 3.5 SP1,但我怀疑这很重要。)
您使用的是WPF浏览器应用程序(cbap)吗?因为如果你是这样,你将无法访问本地文件系统(以及数据库)。 WPF浏览器应用程序使用独立权限运行,非常类似于Silverlight浏览器应用程序。
答案 2 :(得分:-1)
这里的问题接缝是参数。在命令文本中,您不指定其名称,但在添加它时,它具有名称。将命令文本更改为:
Insert Into UserInformation(name) Values (@name)
符合:
cmd.Parameters.AddWithValue("name", textBox1.Text);
参数名称应保持不带@。