我正在使用 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/