我正在学习C#,专心致志,我已经能够创建一个小型系统,在linux服务器上的Mysql数据库中查询和插入信息。 到目前为止一切顺利,但我想避免不断重复数据库的连接代码,或更改服务器,数据库,用户,密码,端口等连接信息。 我真的想创建一个包含此信息的txt文件。 这可能会根据服务器IP,银行名称,最终这个基本信息而改变,而无需重新编译整个项目。 使用mysql数据库摘录连接代码:
private void btnSalvar_Click(object sender, EventArgs e)
{
string constring = "datasource=mysqlip;port=3306;database=winprog;username=root;password=root"; //How to put this part in a .txt file or something that returns the values that it takes for the connection?//
var conexao = new MySqlConnection(constring);
var comando = conexao.CreateCommand();
try
{
conexao.Open();
comando.CommandText = "INSERT INTO name (name,attribute,twoname,valuename) VALUES ('" + nameUser.Text + "','username','=','" + namereal.Text + "')";
comando.ExecuteNonQuery();
}
finally
{
if (conexao.State == ConnectionState.Open)
conexao.Close();
}
}
如果我有10个使用代码并需要输入数据的表单,那么10需要指定连接信息,如果它从服务器更改,则一切都变得更加复杂。 App.config有点奇怪,我想简化这个程序。 谢谢大家,我为英语道歉。
答案 0 :(得分:4)
使用App.config文件并专门查看该元素。在那里,您可以按名称定义连接字符串并使用
获取它ConfigurationManager.ConnectionStrings["<you connection string name>"].ConnectionString;
此页面提供完整说明How to get a Connection String From App Config in C#
另请参阅使用配置转换以允许重新定义配置中的值,这些值会自动为不同的目标环境选择。
答案 1 :(得分:-1)
建议不要使用文本文件来存储连接字符串,但由于您要询问如何以这种方式执行此操作:
bin / debug文件夹
阅读:
var connectionString = File.ReadAllLines("Connectionstring.txt").FirstOrDefault();
现在你可以使用connectionString变量。
但是
正如我所提到的那样,我们不推荐这样做,因为您很难理解App.Config的工作原理。
在App.Config中,您可以创建一个新的元素/条目。每个条目都有名称和值。
<configuration>
<connectionStrings>
<add name="MyDatabaseCS"
connectionString="datasource=mysqlip;port=3306;database=winprog;username=root;password=root"/>
</connectionStrings>
</configuration>
现在您有一个名为 ConnectionStrings 的元素,它可以包含连接字符串的多个/列表。我们将使用名称 MyDatabaseCS 添加新的连接字符串,并将值添加为连接字符串即可。我们稍后会使用名称来获取连接字符串的值。
现在在代码中获取连接字符串值。您只需要引用连接字符串元素,因为您可能有许多连接字符串,您必须区分您确切意味着哪一个,在这种情况下它是 MyDatabaseCS 强>
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseCS"].ConnectionString;