Select语句:无效的列名,在C#中使用Dapper



这是我的数据库的模型类

public class Person
{
public int id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string Fullinfo 
{ 
get
{
return FirstName + " " + LastName + " " + Email;
}
}
}

这是主要的

public partial class DashBoard : Form
{
List<Person> persons =new List<Person>();
public DashBoard()
{
InitializeComponent();
Updated();
}
public void Updated()
{
PeopleFoundListbox.DataSource = persons;
PeopleFoundListbox.DisplayMember = "Fullinfo";
}
public void Searchpeoplebutton_Click(object sender, EventArgs e)
{
persons = Getpeople(Lastnametextbox.Text);
Updated();
}
public List<Person> Getpeople(string searchname)
{        
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.Cnn("peopleDb"))) 
{
var output = connection.Query<Person>("select * from People where Lastname= " + searchname).ToList();
return output;
}         
}
}

我想根据姓氏选择记录我有一排姓大卫,但当我在文本框中键入大卫并搜索时,我会得到这个错误

列名david 无效

您忘记了单引号。

为了添加到GMB的答案以防止SQL注入,您可以使用参数化查询:

var output = connection.Query<Person>(
"select * from People where Lastname= @lastname", new {lastname = lastnamevariable}
).ToList();

删除了答案,因为它会产生sql注入的风险;请看另一个答案。

最新更新