c# - 使用 C# 在 TextBox 中准备语句查询

标签 c# mysql visual-studio-2013 prepared-statement

我正在使用 Visual Studio 2013 并为我的个人项目执行此操作。我想做的是,我尝试在这个查询中使用准备好的语句,但是即使我在文本框中输入了名字,我仍然得到@fname。你知道出了什么问题吗?抱歉,我的英语对我来说很难,但我会尽力解释这一点。

query = "SELECT pkey.keyword AS \"Keyword\", p.title AS \" Title\", p.abstract AS \"Abstract\", p.citation AS \"Citation\", CONCAT_WS(\" \", f.fname, f.lname) AS \"Name\", f.email AS \"Email\" " +
  " FROM paper_keywords pkey" +
  " INNER JOIN papers p ON pkey.id = p.id" +
  " INNER JOIN authorship a ON p.id = a.paperId" +
  " INNER JOIN faculty f ON a.facultyId = f.id WHERE " +
  " f.fname LIKE \"%@fname%\" ";

这是我的代码:

conn = new MySqlConnection(stringConn);
cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@fname", fnametextBox.Text);
conn.Open();

DataTable datatable = new DataTable();
adapter = new MySqlDataAdapter(cmd);
adapter.Fill(datatable);

dataGridView1.DataSource = datatable;
dataGridView1.DataBindings.ToString();
MessageBox.Show(query);

最佳答案

如果我理解正确的话,您想知道为什么当您将查询输出到消息框中时,您仍然在查询中看到@fname?如果是这样:您使用命名 sql 参数编写的查询将保持不变,并且不会被您输入文本框中的值替换,数据库将用您的值替换参数,因此您的查询将始终包含@parameterName,但在数据库引擎中它将使用变量的值。

关于c# - 使用 C# 在 TextBox 中准备语句查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116600/

相关文章:

c# - 拒绝对操作方法的直接 URL 访问

php - 从magento中的2个表获取数据

php - MySQL检查行中是否存在值,以减号分隔

php - 在 linux 上从源代码安装了 mysql,然后如何让它与 php 一起工作?

c# - WPF:如何在具有延迟时间的单独线程中调用方法

c# - 有什么快速熟悉 C#、.NET 框架等的方法?

c# - 如何强制我在 Visual Studio 2013 中的项目始终以管理员身份运行?

c++ - VS 2013 OpenCV错误: Cannot find or open the PDB file

c++ - cdb.exe 位于 Visual Studio 2013 中的什么位置?

c# - 转换日期时间?串入 dd-MM-yyyy