作为name
和size
是价值观,你宁愿得到column1
和column2
等。如果您想配置字段名称,请从应用程序设置中:
column1 = ConfigurationManager.AppSettings["name"];
仅将表名和字段名连接到字符串中。对值使用参数。您的实现对于 SQL 注入攻击是开放的。
strSelectCmd = "INSERT INTO `" + tablemysql + "` (`"+column1+"`,`"+column2+"`,`"+column3+"`,`"+column4+"`) VALUES(@name,@size,@time,@extension)";
在标识符周围使用反引号,这样如果有人使用 SQL 关键字作为标识符,代码就不会中断。
(我从变量名中假设tablemysql
您使用 MySQL 作为数据库。)
编辑:
要获得可配置的值,您需要设置一种方法来使用字符串指定一系列不同的值。您可以使用可用值创建字典:
Dictionary<string, object> values = new Dictionary<string, object>();
values.Add("name", name);
values.Add("size", size);
values.Add("time", time);
values.Add("extension", extension);
values.Add("user", user);
您可以从设置中获取字符串并用于获取相应的值:
object value1 = values[ConfigurationManager.AppSettings["value1"]];
object value2 = values[ConfigurationManager.AppSettings["value2"]];
object value3 = values[ConfigurationManager.AppSettings["value3"]];
object value4 = values[ConfigurationManager.AppSettings["value4"]];
查询将为值指定参数:
strSelectCmd = "INSERT INTO `" + tablemysql + "` (`"+column1+"`,`"+column2+"`,`"+column3+"`,`"+column4+"`) VALUES(@value1,@value2,@value3,@value4)";
现在,您可以在创建用于查询的参数对象时使用这些变量。例子:
command.Parameters.Add(new OleDbParameter("@value1", value1));