簡體   English   中英

c#MySqlCommand.Parameters.AddWithValue,表示表的參數,結果命令添加了單引號

[英]c# MySqlCommand.Parameters.AddWithValue, parameters to express a table, resulted command have a single quote added

我的問題是,當我使用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:如果我不使用AddWithValuechange和更改

@TabName for the_table_i_want

在MySqlCommand中,它可以完美運行!

非常感謝 !

丹尼爾·GB

如注釋所建議,您不能使用參數來表示表或字段名稱。 另一種方法是將表名附加到查詢中。

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM