C# MySql在插入期间将参数名称作为列读取

C# MySql在插入期间将参数名称作为列读取,c#,mysql,C#,Mysql,这应该很简单。基本上,我只是将数据插入表中: string sql = "insert into Files(filename, filedate, filedata, filesize) values(xname, xdate, xdata, xsize);select last_insert_id() as lastid from Files"; 这里指定的值(xname,xdate等)只是参数,我在执行查询之前设置它们的值 不幸的是,出现了一些问题,我得到了以下错误: “字段列表”中的未

这应该很简单。基本上,我只是将数据插入表中:

string sql = "insert into Files(filename, filedate, filedata, filesize) values(xname, xdate, xdata, xsize);select last_insert_id() as lastid from Files";
这里指定的值(
xname
xdate
等)只是参数,我在执行查询之前设置它们的值

不幸的是,出现了一些问题,我得到了以下错误:

“字段列表”中的未知列“xname”

我可以理解,出于某种原因,它正在寻找一个名为“xname”的列,而这个列显然不存在。我不明白的是它为什么这么做

通常,我用@符号(@name、@date等)来“标记”参数,这通常是有效的,但我在公司的另一个开发人员编写的系统上工作,我必须维护约定


有人能解释我为什么会出现这个错误吗?

如果xname、xdate、xdata和xsize是变量,那么您可以执行以下操作:

string sql = "insert into Files(filename, filedate, filedata, filesize) values(" +
     xname + ", " + xdate + ", " +
     xdata + ", " + xsize +
     ");select last_insert_id() as lastid from Files";

删除文件名和相应的xname时会发生什么情况?它仍然会给你错误吗?@AshReva我得到了相同的错误,现在引用xdate作为字段列表中不存在的字段。你是否按照SteveP提到的那样尝试过?你能告诉我变量xname,xdate中得到了什么值吗?我不想冒险sql注入,所以我设置了一个存储过程来处理它。现在似乎很好,这是一个很好的观点。关于如何使用这段代码,您并没有给我们提供太多的上下文。您可以通过清理变量来保护自己,或者更好的方法是使用存储过程转换为。