【问题标题】:How to connect to a MySql database in ASP.NET web application?如何在 ASP.NET Web 应用程序中连接到 MySql 数据库?
【发布时间】:2012-07-28 05:17:21
【问题描述】:

假设我的 Web.config 中已经有一个名为“myConn”的正确格式的连接字符串。该数据库位于不同的服务器上,并且是 MySQL。如何在我的 ASP.NET Web 应用程序中连接到此数据库?

我尝试了什么:
我尝试安装“ADO.NET C# DbContext Generator With WCF Support”,但这在我的脸上出现了错误消息“程序集引用“System.Data.Entity”不能是添加到项目中。此向导将继续运行,但生成的项目可能无法正确构建。'

注意事项:

  • 使用 Visual Studio 2010(版本 10.0.40219.1 SP1Rel)
  • 使用 .NET Framework 2.0

【问题讨论】:

  • 您的网络应用使用的是哪个版本的 .net?
  • 您对如何在asp.net 中建立数据库连接非常熟悉吗?比如sqlconnection、linqdatasource等?
  • 可能是愚蠢的问题,但是已经下载了 MySql ado.net 客户端?
  • @Simon Halsey 我下载/安装了上述模板,但它给了我错误。不确定这是否是您所指的“客户”。
  • @DanielA.White 对。好问题。我正在使用 .NET Frameworkd 2.0。我会将其添加到我的问题描述中。

标签: c# asp.net mysql


【解决方案1】:

假设 ODBC(不是唯一的选择),它应该只是:

OdbcConnection conn = new OdbcConnection(connectionString);
conn.Open();

编辑:哦,如果它是从您想知道的 web.config 中获取的(可能不是,但谁知道),那部分将是:

string connectionString = System.Configuration.ConfigurationManager.AppSettings["myConn"].ToString(); //ToString here is optional unless you're doing some weirdness in the web.config

根据您的要求,以下是 obdc 数据操作背后的基础知识:

以下是查询类型的语句:

string command = "SELECT Something FROM SomeTable WHERE SomethingElse = '%" + "@Parameter1" + "%' AND SomethingElseStill LIKE '%" + @Parameter2 + "%' ";
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    OdbcCommand command = new OdbcCommand(command, conn);
    command.Parameters.Add("@Parameter1", OdbcType.VarChar, 255);
    command.Parameters["@Parameter1"].Value = "SomeString"
    command.Parameters.Add("@Parameter2", OdbcType.Int);
    int SomeInteger = 1;
    command.Parameters["@Parameter2"].Value = SomeInteger;
    OdbcDataAdapter adapter = new OdbcDataAdapter(command,con);
    DataSet Data = new DataSet();
    adapter.Fill(Data);
}

这将使用 OdbcDataAdapter 对象从您的数据库中获取数据并将其推送到 DataTable 对象中。这不是唯一的方法,但它肯定是最基本的。查看this great answer 以获取将结果转换为您想要的任何对象列表的方法,使用一点点反射。您还可以使用 LINQ 之类的东西将数据映射到自定义类,但我将把这一点留给您。

无论如何,这里是一样的,但是没有查询:

string command = "INSERT INTO SomeTable (column1, column2, column3) VALUES '%" + "@Parameter1" + "%', '%" + "@Parameter2" + "%', '%" + "@Parameter3" + "%' ";
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    OdbcCommand command = new OdbcCommand(command, conn);
    command.Parameters.Add("@Parameter1", OdbcType.VarChar, 255);
    command.Parameters["@Parameter1"].Value = "SomeString"
    command.Parameters.Add("@Parameter2", OdbcType.Int);
    int SomeInteger = 1;
    command.Parameters["@Parameter2"].Value = SomeInteger;
    command.Parameters.Add("@Parameter3", OdbcType.VarChar, 255);
    command.Parameters["@Parameter3"].Value = "SomeOtherStringOrSomething";
    command.ExecuteNonQuery();
}

请务必仔细检查我的引号和内容,因为我是在 StackOverflow 编辑器中编写的,而不是任何类型的 IDE,所以很遗憾我没有得到语法高亮显示:P

【讨论】:

  • @EricTurner 很酷,让我知道进展如何。如果您愿意,我将添加一个编辑,向您展示如何使用 odbc“模式”进行基本操作
  • 那确实很有帮助!
  • 感谢您为此付出了额外的努力。真的很感激。向你致敬,先生 m(_ _)m
  • @EricTurner 没问题!您可能需要再次查看它,因为我在过去几分钟内已对其进行了大约一千次编辑,以添加一些我认为有用的信息。我链接的 stackoverflow 答案很大。
  • 明白。不过,我需要更多时间,因为我要到当天晚些时候才能尝试/确认解决方案。
【解决方案2】:

如果它是不同的服务器,但它是同一个数据库,具有相同的凭据,您只需将连接字符串指向新服务器的 IP 地址,它应该可以工作。

【讨论】:

  • 我认为连接字符串部分没问题(据我所知,它的形成是正确的),但我正在努力的是下一步该做什么。
【解决方案3】:

检查参考:System.Data.DataSetExtensions

代码

 using System.Data.Odbc;

 private const string ConnStr = "Driver={MySQL ODBC 3.51    Driver};
 Server=localhost;Database=test;uid=root;pwd=;option=3";

甚至你可以将连接字符串放在 web.config..

【讨论】:

    【解决方案4】:

    由于您使用的是 .NET 2.0,因此您不能使用实体框架或System.Data.Entity

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      相关资源
      最近更新 更多