【问题标题】:How to pass variables into a SQL string field?如何将变量传递到 SQL 字符串字段中?
【发布时间】:2019-05-19 23:33:01
【问题描述】:

我试图直接在我的一个 SQL 字符串字段中传递一个变量,但我没有找到正确的语法。

我尝试使用“{variable}”或“@variable”,但是当我将它提供给我的软件时,它会像字符串一样显示它!

我的函数正在获取 SQL 字符串(它正在工作)

public List<Dare> getDares()
        {
            if (myDataSet.Tables["TousLesGages"] != null)
            {
                myDataSet.Tables["TousLesGages"].Clear();
            }

            List<Dare> dares = new List<Dare>();

            connect();

            query = "SELECT * FROM Dare";
            mySqlCommand.CommandText = query;
            myDataAdapter.SelectCommand = mySqlCommand;
            myDataAdapter.Fill(myDataSet, "TousLesGages");

            foreach (DataRow row in myDataSet.Tables["TousLesGages"].Rows)
            {
                Dare dare = new Dare((int)row.ItemArray[0], 
                                     row.ItemArray[1].ToString(),
                                     category.getCategoryById((int)row.ItemArray[2]),
                                     type.getTypeById((int)row.ItemArray[3]),
                                     null);
                dares.Add(dare);
            }

            return dares;
        }

我如何显示它:

gage = dare.getDares()[rndGage.Next(0, dare.getDares().Count)];
lblDare.Text = gage.text;

我希望 {drink} 的输出是 1 到 5 之间的整数理解(我已经创建了 Random 对象来允许它,顺便说一下,它的名字是“drink”)

Server Side

Client Side

【问题讨论】:

  • 我看不到您将包含 {drink} 的文本链接到您提供的代码的任何地方。这应该是参数化查询吗?很难看出你想要实现什么。
  • 您正在存储和检索包含内容占位符的数据。检索数据后,您需要在应用程序中显示内容之前解释占位符。数据库不会这样做。找一个可以做到这一点的库或自己实现它。

标签: c# mysql sql


【解决方案1】:

好的,我找到了一种不使用库的方法。您只能对字符串而不是变量使用字符串插值,例如:

string name = "John";
string result = $"{name}";

但是!取而代之的是,我使用了 string.Format() 函数:

// gage.Text is a string containing "bla bla {0} bla"
// drink is an integer between 1 and 5

lblDare.Text = string.Format(gage.text, drink);

我希望它会帮助人们! :)

【讨论】:

  • 你是对的,字符串插值是由编译器处理的,处理这个的字符串和处理数据库的代码都没有魔法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2020-06-16
  • 2012-04-15
相关资源
最近更新 更多