asp.net web应用程序连接到主机sql数据库

aiqt4smr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(431)

我有一个简单的webapi应用程序,我想将它连接到主机中的数据库。这在我的web.config中:

<connectionStrings>
    <add name="JarasDB" connectionString="Data Source=localhost;Initial Catalog=JarasDB;Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>

我将用以下代码来测试它:

public string Get(int id)
{
    string connectionString = ConfigurationManager.ConnectionStrings["JarasDB"].ConnectionString;
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        try
        {
            //
            // Open the SqlConnection.
            //
            con.Open();
            //
            // The following code uses an SqlCommand based on the SqlConnection.
            //
            using (SqlCommand command = new SqlCommand("CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime);", con))
                command.ExecuteNonQuery();

        }
        catch (Exception ex)
        {}
    }
    return strings[id];
}

在“我的主机”中发布项目后,将在plesk面板的asp.net配置页中添加连接字符串:

调用get方法后,我希望在数据库中创建一个表,但什么也没发生。我想知道我的问题在哪里。

ikfrs5lh

ikfrs5lh1#

出现此问题的原因是您正在使用sql server连接字符串来连接mysql数据库,而mysql数据库没有按预期工作。确保项目中引用了mysql connector.net(即include) MySql.Data.dll 以及所有相关的程序集),然后替换此程序集中的连接字符串:

<!-- Wrong (SQL Server connection string) -->
<add name="JarasDB" connectionString="Data Source=localhost;Initial Catalog=JarasDB;Integrated Security=True;" providerName="System.Data.SqlClient" />

对于此示例:

<!-- Correct -->
<add name="JarasDB" connectionString="Server=localhost;Port=3306;Database=jarasdb;Uid=UserID;Pwd=XXXXX" providerName="MySql.Data.MySqlClient"/>

此外,还必须使用 MySqlConnection 以及 MySqlCommandMySql.Data.MySqlClient 要执行ddl查询的命名空间:

// add this line on top of 'using' lines
using MySql.Data.MySqlClient;

public string Get(int id)
{
    string connectionString = ConfigurationManager.ConnectionStrings["JarasDB"].ConnectionString;
    using (MySqlConnection con = new MySqlConnection(connectionString))
    {
        try
        {
            con.Open();
            using (MySqlCommand command = new MySqlCommand("CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime);", con))
            {
                command.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        { 
            // throw exception here 
        }
    }
    return strings[id];
}

参考:mysql connector.net连接字符串

相关问题