c# MySqlCommand.Parameters.AddWithValue,表示表的参数,结果命令添加了单引号

本文关键字:命令 结果 添加 单引号 参数 Parameters MySqlCommand AddWithValue 表示 | 更新日期: 2023-09-27 17:57:06

我的问题是当我使用 AddWithValue 时,我的命令中出现了两个不需要的单引号。这就是我调用函数的方式:

string sqlTableName = "the_table_i_want";
DataTable myDataTable = SQLcom.SelectLastValueInTab(sqlTableName);

我的职能;

public static DataTable SelectLastValueInTab(string TableName)
    {
        using (MySqlConnection con = new MySqlConnection(ConnStr))
        {
            using (MySqlCommand myCommand = new MySqlCommand("SELECT * FROM @TabName ORDER BY id DESC LIMIT 1", con))
            {
                myCommand.Parameters.AddWithValue("@TabName", TableName);
                try
                {
                    con.Open();
                    MySqlDataReader testreader = myCommand.ExecuteReader();

结果命令是:

"SELECT * FROM 'the_table_i_want' ORDER BY id DESC LIMIT 1"

并且假设是:

"SELECT * FROM the_table_i_want ORDER BY id DESC LIMIT 1"

它导致程序崩溃,因为我有:

a syntax error near ''the_table_i_want' ORDER BY id DESC LIMIT 1'

PS :如果我不使用添加值更改和更改

@TabName for the_table_i_want

在MySql命令中,它运行完美!

多谢!

丹尼尔·

c# MySqlCommand.Parameters.AddWithValue,表示表的参数,结果命令添加了单引号

正如注释所建议的,不能使用参数来表示表或字段名称。另一种方法是将表名附加到查询中。

public static DataTable SelectLastValueInTab(string TableName)
{
    using (MySqlConnection con = new MySqlConnection(ConnStr))
    {
        string qry = "SELECT * FROM " + TableName + " ORDER BY id DESC LIMIT 1";
        using (MySqlCommand myCommand = new MySqlCommand(qry, con))
        {
            try
            {
                con.Open();
                MySqlDataReader testreader = myCommand.ExecuteReader();