gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:24:54 24 4
gpt4 key购买 nike

我的问题是,当我使用 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 中它工作得很好!

非常感谢!

丹尼尔 G.B

最佳答案

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

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

关于c# MySqlCommand.Parameters.AddWithValue,参数表达一个表,结果命令添加了单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com