C# 应用配置数据库变量

本文关键字:变量 数据库 配置 应用 | 更新日期: 2023-09-27 18:37:10

好的,我在这里遇到了一些问题。我想知道在我的情况下什么对我的应用程序配置有用。这是我的代码:

name = Path.GetFileNameWithoutExtension(filepath);
extension = Path.GetExtension(e.FullPath);
size = e.Name.Length;
strSelectCmd = "INSERT INTO" + tablemysql + " ("+column1+","+column2+","+column3+","+column4+") VALUES('" + name + "','" + size + "',now(),'" + extension + "')";

现在我希望变量的值:name sizeextension是可调的。我在想一些方法来做到这一点。就像把它放在应用程序配置中一样:

<add key="value1" value="e.Name.Length"/>

这可能不会奏效。

例如,如果

我想size是可调的,我该怎么办。因此,当有人在数据库中使用不同类型的列(例如他们将数据库中的size更改为user时,他们也可以更改所谓的名称/值:size

可能有一个非常简单的解决方案,如果是这样,我很抱歉。

C# 应用配置数据库变量

由于值namesize,如果您希望字段名称可配置,则宁愿从应用程序设置中获取column1column2 et.c.:

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));

将这些放入配置文件中是一个有效的选项。为简单起见,您可以使用应用程序设置(请参阅 XML 摘录)。你可以使用 配置管理器 访问应用设置:

size = String.IsNullOrEmpty(ConfigurationManager.AppSettings["size"] ? e.Name.Length : int.Parse(ConfigurationManager.AppSettings["size"];

为了使用 ConfigurationManager,您可能需要添加对 System.Configuration 程序集的引用。

让我们分两步完成。 第一:在配置中声明列键并从那里读取

column2 = ConfigurationManager.AppSettings["columnKey"];

2nd:基于键读取值

string size = GetSizeValue(column2, e);

GetSizeValue 将如下所示:

private static string GetSizeValue(string columnKeyValue, SomeArgsType e)
    {
        switch (columnKeyValue)
        {
            case "size":
                return e.Name.Length;
            case "user":
                return e.Name.User; // or something else
        }
        throw new Exception("Invalid Entry");
    }