C# 写入MySQL

C# 写入MySQL,c#,.net,mysql,C#,.net,Mysql,我以前在学校做过一些简单的数据库编程,但现在我正在编写更复杂的应用程序,我正在努力学习最佳实践。写入MySQL数据库并不困难,但我想知道让分布式应用程序在AmazonEC2上写入远程数据库的最佳实践是什么 现在,我将在云中托管一个MySQL数据库,它能够接收传入的连接。我对此表示怀疑,因为默认情况下,它只允许本地主机连接到它 有没有一种更安全或更专业的方式在云中写入MySQL实例,而不仅仅是执行某种DbConnect,硬编码服务器的在线主机名、根用户名和密码?我只是不想让生产应用程序不能以最佳方

我以前在学校做过一些简单的数据库编程,但现在我正在编写更复杂的应用程序,我正在努力学习最佳实践。写入MySQL数据库并不困难,但我想知道让分布式应用程序在AmazonEC2上写入远程数据库的最佳实践是什么

现在,我将在云中托管一个MySQL数据库,它能够接收传入的连接。我对此表示怀疑,因为默认情况下,它只允许本地主机连接到它

有没有一种更安全或更专业的方式在云中写入MySQL实例,而不仅仅是执行某种DbConnect,硬编码服务器的在线主机名、根用户名和密码?我只是不想让生产应用程序不能以最佳方式访问数据库


谢谢!你们总是很棒。

迄今为止,数据库工作最可行的选择是使用实体框架之类的东西 您的模型就是模型,您的数据库连接自行建立,如果需要,您可以轻松地将应用程序移植到另一个数据库提供程序。。。也就是说,从mysql到msSQL不需要做很多工作

实体框架代码优先是我认为最容易移植的。同样,对于mysql,您只需要提供程序本身的mysql.net连接器,这与实体框架一起工作

此外,通过使用模型和linq,您还可以进一步减少SQL注入带来的问题,因为您实际上不会编写或发送任何SQL

考虑到这一点,如果您有一个庞大的数据库,EF是一个令人头痛的问题,而且速度非常慢。对于这一点,一个简单的数据库类就可以了,您可以有如下几个函数:

private readonly MySqlConnection _conn = new MySqlConnection();
private MySqlCommand _myCommand = new MySqlCommand();

private readonly string _dbConn = ConfigurationManager.AppSettings["dbConn"];

public void Closedb()
{
    try
    {
        _conn.Dispose();
        _conn.Close();
    }
    catch (Exception ex)
    {

    }
}

public void UpdateDatabaseWithSql(string mysql)
{
    Closedb();

        _conn.ConnectionString = _dbConn;
        _conn.Open();


    _myCommand= new MySqlCommand(mysql,_conn);

    _myCommand.ExecuteNonQuery();

    Closedb();
}
mysql的DB连接在web.config文件中如下所示:

<add name="MvcCustomContext" 
     connectionString="server=[ip];User Id=[user];password=[pass];Persist Security Info=True;database=[dbname]" 
     providerName="MySql.Data.MySqlClient" />


希望这有帮助

迄今为止,数据库工作最可行的选择是使用类似实体框架的东西 您的模型就是模型,您的数据库连接自行建立,如果需要,您可以轻松地将应用程序移植到另一个数据库提供程序。。。也就是说,从mysql到msSQL不需要做很多工作

实体框架代码优先是我认为最容易移植的。同样,对于mysql,您只需要提供程序本身的mysql.net连接器,这与实体框架一起工作

此外,通过使用模型和linq,您还可以进一步减少SQL注入带来的问题,因为您实际上不会编写或发送任何SQL

考虑到这一点,如果您有一个庞大的数据库,EF是一个令人头痛的问题,而且速度非常慢。对于这一点,一个简单的数据库类就可以了,您可以有如下几个函数:

private readonly MySqlConnection _conn = new MySqlConnection();
private MySqlCommand _myCommand = new MySqlCommand();

private readonly string _dbConn = ConfigurationManager.AppSettings["dbConn"];

public void Closedb()
{
    try
    {
        _conn.Dispose();
        _conn.Close();
    }
    catch (Exception ex)
    {

    }
}

public void UpdateDatabaseWithSql(string mysql)
{
    Closedb();

        _conn.ConnectionString = _dbConn;
        _conn.Open();


    _myCommand= new MySqlCommand(mysql,_conn);

    _myCommand.ExecuteNonQuery();

    Closedb();
}
mysql的DB连接在web.config文件中如下所示:

<add name="MvcCustomContext" 
     connectionString="server=[ip];User Id=[user];password=[pass];Persist Security Info=True;database=[dbname]" 
     providerName="MySql.Data.MySqlClient" />



希望这对您有所帮助。最好的方法是让另一个应用程序在服务器上运行,并侦听TCP上的端口,以便对数据库执行操作。您可以在服务器应用程序上对消息进行加密和解密,使用安全的用户名/密码和数据传输。

最好的方法是让另一个应用程序在服务器上运行,并侦听TCP端口以对数据库执行操作。您可以在服务器应用程序上对消息进行加密和解密,使用安全的用户名/密码和数据传输。

您可以在运行MySQL数据库的主机上运行其他应用程序吗?我想可以,但这会使它更安全吗?我想我的问题是,我的方法不好吗?而且,你说你想以“最佳方式”访问数据库。这对你到底意味着什么?最方便吗?效率最高?最安全的?还有,既然你提到了安全,你想防御什么样的攻击?真的,到处都是。我想知道一个问题,我现在的做法是否糟糕,如果是这样,第二个问题,在应用程序中读写远程数据库最常见的方法是什么?@Jack我建议你读一本关于ADO.NET和C的好书。我相信APress有一个就足够了。也许,这个?您可以在运行MySQL数据库的主机上运行其他应用程序吗?我想可以,但这会使它更安全吗?我想我的问题是,我的方法不好吗?而且,你说你想以“最佳方式”访问数据库。这对你到底意味着什么?最方便吗?效率最高?最安全的?还有,既然你提到了安全,你想防御什么样的攻击?真的,到处都是。我想知道一个问题,我现在的做法是否糟糕,如果是这样,第二个问题,在应用程序中读写远程数据库最常见的方法是什么?@Jack我建议你读一本关于ADO.NET和C的好书。我相信APress有一个就足够了。也许,这个?在我看来,这就像是普通的ole ADO.NET。这是因为底部的一点是,我将它与我的实体一起用于批量工作,因为EF对于我使用的数据库的大小来说太慢了,但不要理解你的观点:-)似乎每次我转过头来,都有一个关于相同技术的新流行词。这让我发疯。我不知道为什么MS不能单独呆着。无论如何,好答案+1。我只想补充一点,如果OP不太熟悉.NET db编程,那么他/她应该学习ADO.NET。这是所有其他新宣传的核心所在。无论如何,如果EF不可扩展,为什么要使用它呢?因为以mvcscaffolding为例,你可以在半天内完成一个数据库驱动的网站,所有的代码都差不多完成了。EF也不是一个流行词。多年来,这个概念一直以一个不同的名字出现,MVC模型实际上只是一个来自时代曙光的设计模式:-)我对设计模式没有问题:只是微软似乎无法解决一个问题。无论如何,我不是在说MVC。此外,初学者不应该从抽象和设计模式开始,而应该从实际的核心技术开始。在他们知道之后,那就是蒂姆