【问题标题】:c# database listbox item removec# 数据库列表框项删除
【发布时间】:2015-08-30 07:10:36
【问题描述】:

我正在创建一个数据库,我可以添加名称,但我无法删除,请帮帮我。

这是我的代码:

private void button2_Click(object sender, EventArgs e)
{
    using (connection = new SqlConnection(connectionString))
    using (SqlCommand cmds = new SqlCommand("DELETE FROM Recipe WHERE firstName = @user", connection))
    {
        connection.Open();
        cmds.Parameters.AddWithValue("@user", cmds);
        cmds.ExecuteNonQuery();

    }
    populateRecipe();
}

这是错误

System.Data.dll Additional 信息中出现 System.ArgumentException 类型的未处理异常:不存在从对象类型 System.Data.SqlClient.SqlCommand 到已知托管提供程序本机类型的映射。

【问题讨论】:

  • 有什么错误可以分享吗?
  • 您遇到的错误是什么?
  • System.Data.dll 中发生“System.ArgumentException”类型的未处理异常附加信息:不存在从对象类型 System.Data.SqlClient.SqlCommand 到已知托管提供程序本机类型的映射。
  • 我在这里读到stackoverflow.com/questions/9155004/… cmds.Parameters.AddWithValue 不是工作的好方法。它只向数据库发送nvarchar 而不是int

标签: c# sql connection


【解决方案1】:

而不是将 cmds 本身传递给 AddWithValue 方法:

cmds.Parameters.AddWithValue("@user", cmds);

我想你应该传递你的实际用户名:

cmds.Parameters.AddWithValue("@user", username);

【讨论】:

  • 我学完了 c# 现在我需要继续 SQL 学习 CREATE TABLE [dbo].[Recipe] ( [Id] INT IDENTITY (1, 1) NOT NULL, [firstName] NVARCHAR (50) NOT NULL,主键集群([Id] ASC));这是我的数据库
  • @Captain 我建议你学习实体框架。它不仅非常易于使用,而且您也会喜欢处理它。祝你好运。
【解决方案2】:

您将cmds 变量作为@user 参数的值传递,这没有意义,因为它是SqlCommand 对象:

cmds.Parameters.AddWithValue("@user", cmds);

您不打算传递要删除的用户名吗?

cmds.Parameters.AddWithValue("@user", "Username");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多