Tag: mysql parameter

MySqlParameter作为TableName

我想使用MySqlParameter将tableName传递给查询(以防止slq注入) MySqlCommand cmd = new MySqlCommand(“select * from @table”), cn) cmd.Parameters.AddWithValue(“@table”,TableName); 但这不起作用。 如何将tableName作为参数传递 PS我试图改变@到? – 不工作

C#和MySQL .NET Connector – 在通用类中防止SQL注入攻击的任何方法?

我的想法是通过C#(3.5)Winforms应用程序通过MySQL .NET Connector 6.2.2与MySQL数据库交谈,为Insert / Update / Select创建一些通用类。 例如: public void Insert(string strSQL) { if (this.OpenConnection() == true) { MySqlCommand cmd = new MySqlCommand(strSQL, connection); cmd.ExecuteNonQuery(); this.CloseConnection(); } } 然后,从程序的任何地方我都可以通过传递SQL查询字符串来运行带/不带用户输入的查询。 在SO上阅读开始告诉我这可能导致SQL注入攻击(对于任何用户输入值)。 无论如何擦除输入的strSQL还是我需要在每个需要执行数据库function的方法中创建单独的参数化查询? UPDATE1: 我的最终解决方案看起来像这样: public void Insert(string strSQL,string[,] parameterValue) { if (this.OpenConnection() == true) { MySqlCommand cmd = new MySqlCommand(strSQL, connection); for(int i =0;i< (parameterValue.Length […]

将List 添加到mysql参数

我有关于.NET连接器的MySqlParameter的这个问题。 我有这个问题: SELECT * FROM table WHERE id IN (@parameter) 而MySqlParameter是: intArray = new List(){1,2,3,4}; …connection.Command.Parameters.AddWithValue(“parameter”, intArray); 这个有可能? 是否可以将int数组传递给单个MySqlParameter? 另一个解决方案是将int数组转换为像“1,2,3,4”这样的字符串,但是当我将它传递给MySqlParameter并将其识别为字符串时,它会像sql查询一样放入“1 \,2 \,3 \,4”,这不会返回预期值。 @ UPDATE:似乎mysql连接器团队应该更加努力。

C#MySqlParameter问题

(int)faultsGroup是0或1,但我总是得到这个错误:列’FaultGroup’不能为null 有人告诉我为什么吗? 语法看起来不错。 MySqlCommand cmdAdd = new MySqlCommand(“INSERT INTO Faults (” + ” FaultGroup, Text, Date, IP” + “) VALUES (” + ” @FaultGroup, @Text, @Date, @IP” + “)”, conn); MySqlParameter paramFaultGroup = new MySqlParameter(“@FaultGroup”, MySqlDbType.Int32); FaultsGroup faultsGroup = (FaultsGroup) Enum.Parse(typeof (FaultsGroup), myFault.FaultGroup); paramFaultGroup.Value = (int) faultsGroup; cmdAdd.Parameters.Add(paramFaultGroup); cmdAdd.ExecuteNonQuery();