1

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

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

笔记:

  • 使用 Visual Studio 2010(版本 10.0.40219.1 SP1Rel)
  • 使用 .NET 框架 2.0
4

4 回答 4

4

假设 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 对象中。这不是唯一的方法,但它肯定是最基本的。查看这个很棒的答案,了解一种使用一点反射将结果转换为您想要的任何对象列表的方法。您还可以使用 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

于 2012-07-30T14:15:44.317 回答
0

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

于 2012-07-30T14:08:23.240 回答
0

检查参考: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 中。

于 2012-07-30T14:27:24.353 回答
0

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

于 2012-07-30T15:23:52.887 回答