【问题标题】:How can I change datagridview table with combobox?如何使用组合框更改 datagridview 表?
【发布时间】:2020-06-01 08:13:10
【问题描述】:

我尝试使用组合框更改 datagridview 表。但我不能改变参数。如何更改数据库表?

public DataTable TableLoad()
    {
        DataSet AL2020DS = new DataSet();
        SqlDataAdapter SQLDA = new SqlDataAdapter();
        SqlCommand Cmd1;
        string Sql = "SELECT * FROM @value ORDER BY [Donanım Seri No] ASC";
        Cmd1 = new SqlCommand(Sql, con);
        Cmd1.Parameters.AddWithValue("@value", cbbox_llisteler.Text);
        SQLDA.SelectCommand = Cmd1;
        DataTable AL2020DT = new DataTable();
        SQLDA.Fill(AL2020DT);
        return AL2020DT;
    }

public Form1()
    {
        InitializeComponent();
        dataGridView1.DataSource = TableLoad();
    }

当我尝试这个参数命令时我得到这个错误:必须声明表变量“@value”

【问题讨论】:

标签: c# sql-server sql-server-2008


【解决方案1】:

你的@value 没有被插值。使用 string.Format() 或者如果您使用 C#6,则使用以下语法。另外,请注意我已经删除了ASC,因为这是默认设置,无需提及。

string Sql = $"SELECT * FROM {value} ORDER BY [Donanım Seri No]";

再次,在下面的代码行中,您尝试将表名作为参数传递,这是不可能的。您只能将查询参数作为参数传递,而不是表/列名。

所以基本上你会喜欢

    string Sql = $"SELECT * FROM {cbbox_llisteler.Text} ORDER BY [Donanım Seri No] ASC";
    Cmd1 = new SqlCommand(Sql, con);        
    SQLDA.SelectCommand = Cmd1;

【讨论】:

  • 如果他需要通过 [Donanım Seri No] = @value 这样的条件怎么办。我认为 OP 正在寻求在 where 条件下传递值。
  • @SurajKumar 我看不到。我相信你不能在WHERE 子句中传递表名。
  • 我在想 - Select * from tblSerialNo where [Donanım Seri No] = @value.
  • 那么如何在没有参数的情况下更改表格?
  • 当我尝试这段代码时,我得到了这个错误:'}' 附近的语法不正确。
【解决方案2】:

我找到解决办法

string Sql = "SELECT * FROM " + TextBox1.Text + " ORDER BY [Hardware Serial Number] ASC"

我在点击功能中使用了这段代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多