如何将文本框文本详细信息传递给数据库连接字符串C#

时间:2019-05-04 14:47:31

标签: c# database

我有一个应用程序,希望将文本框中的用户输入的用户名密码端口服务名传递给连接字符串,以便可以将其用于Oracle数据库连接。

示例:

string conString = "User Id=hr;Password=hr;Data Source=localhost:1523/orcl.162.0.7;";

代替值User Id hr => textuser_id.Text 代替password hr => textpass.Text

2 个答案:

答案 0 :(得分:2)

在应用程序中嵌入用户名和密码绝不是一个好主意。主要是因为大多数代码最终都存储在诸如github之类的代码存储库中,并且您不希望将用户和密码提供给公司中其他团队或其他github用户使用。它所要做的只是不经意地公开了一个仓库,突然之间任何人都可以访问您的数据库。 一些替代方案包括

  1. 从诸如天蓝色钥匙保险库或HashiCorp保险库之类的钥匙保险库中拉出它们
  2. 如果它们将在服务器上运行,请从系统环境变量Environment Variables中将其拉出
  3. 然后按照上面的建议,先生们建议您可以使用SqlConnectionStringBuilder将用户名和密码一起放在字符串中

不过,据您所知,如何操作字符串的一些例子包括

        public string CreateConnectionString(string user, string password)
        {
            string optionOne = "User Id="+user+";Password="+password+";Data Source=localhost:1523/orcl.162.0.7;";

            // String interpolation
            string optionTwo = $"User Id={user};Password={password};Data Source=localhost:1523/orcl.162.0.7;";
                // Many more ways 
            return optionTwo;
        }

答案 1 :(得分:0)

您可以使用string.Format:

string constring = string.Format("User Id={0};Password={1};Data Source=localhost:1523/orcl.162.0.7;", textuser_id.Text, textpass.Text);

您还可以在字符串前面使用$:

string constring = $"User Id={textuser_id.Text};Password={textpass.Text};Data Source=localhost:1523/orcl.162.0.7;";

区别:

  • string.Format:在{}中使用数字来指示值在字符串后的位置。

  • $:使用{}中的值。

对我来说,使用$更容易,但是您可以同时使用两者。

祝你好运!