在wpf中插入sql查询

时间:2009-12-15 13:14:18

标签: ado.net insert oledb

大家好,我是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)
    {  }
}

3 个答案:

答案 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);

参数名称应保持不带@。