如何将Web服务连接到MySql DB?

时间:2013-04-26 15:48:37

标签: mysql .net web-services

我使用Visual Studio在C#中创建了一个Web服务,它连接到我PC上的MySql DB。在调试模式下它工作得很好,我可以使用Web方法并执行查询。 但是,由于我在主机上发布了我的Web服务,因此Web服务不再起作用。 这是代码,以防万一:

DbConnect.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;

namespace WebService1
{
public class DBConnect
{
    private MySqlConnection connection;
    private string server;
    private string database;
    private string uid;
    private string password;

    //Costruttore
    public DBConnect()
    {
        Initialize();
    }

    //Inizializzazione dei valori
    private void Initialize()
    {
        string connectionString;
        server = "localhost";
        database = "cartellodb";
        uid = "OCRUser";
        password = "admin";

        connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" +
                            "UID="  + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
    }

    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }catch (MySqlException e) {
            switch (e.Number) { 
                case 0:
                    Console.WriteLine("Impossibile connettersi al server");
                    break;
                case 1045:
                    Console.WriteLine("Password/username non validi. Riprovare");
                    break;
            }
            return false;
        }
    }


    private bool CloseConnection()
    {
        try
        {
            connection.Close();
            return true;
        }catch (MySqlException e){
            Console.WriteLine(e.Message);
            return false;
        }
    }

    public string Insert(string lat, string lon, string text)
    {
        string query = "INSERT INTO Cartello VALUES (" + lat + "," + lon + ",'" + text + "');";

        //apertura connessione
        if (this.OpenConnection() == true)
        {
            //creazione ed istanziazione comando ed assegnazione della query e della connessione al comando
            MySqlCommand cmd = new MySqlCommand(query, connection);

            //esecuzione query
            cmd.ExecuteNonQuery();                     
        }
        this.CloseConnection();

        return "Inserimento dati completato con successo";
    }

    public string Test(string lat, string lon, string text)
    {
      string query = "SELECT * FROM Cartello WHERE latitude = " + lat + " AND longitude = " + lon + " AND testo = '" + text + "';";
      string result = "", queryResult = "";

      //apertura connessione 
      if(this.OpenConnection() == true)
      {
          //creazione ed istanziazione comando ed assegnazione della query e della connessione al comando
          MySqlCommand cmd = new MySqlCommand(query, connection);

          //creazione ed istanziazione del Data Reader che conterrà il risultato della query alla tabella
          MySqlDataReader dataReader = cmd.ExecuteReader();

          while(dataReader.Read())
              queryResult = dataReader.GetString(0);

          if(queryResult.CompareTo("") == 0)
              result = "NOTEXISTS";
          else
              result = "EXISTS";

          dataReader.Close();
          this.CloseConnection();
      }


      return result;
    }
    }

}

Service1.asmx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using MySql.Data.MySqlClient;

namespace WebService1
{
/// <summary>
/// Descrizione di riepilogo per Service1
/// </summary>
[WebService(Namespace = "http://ocrwebservice.somee.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Per consentire la chiamata di questo servizio Web dallo script utilizzando ASP.NET AJAX, rimuovere il commento dalla riga seguente. 
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public string InsertIntoDB(string latitudine, string longitudine, string testo)
    {
        DBConnect dbObject = new DBConnect();
        string result;

        result = dbObject.Insert(latitudine, longitudine, testo);
        return result;
    }

    [WebMethod]
    public string Testing(string latitudine, string longitudine, string testo)
    {
        DBConnect dbObject = new DBConnect();
        string result;

        result = dbObject.Test(latitudine, longitudine, testo);
        return result;
    }
}
}

拜托,有谁可以帮我解决这个问题? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

server = "localhost"; 需要设置为真实服务器位置,如果您已将服务托管在其他位置,则该位置不再是localhost。

答案 1 :(得分:0)

我遇到了类似的问题。然后我记得连接器(MySql * .dll)没有被复制到服务器中的bin文件夹。 &GT;: - P

注意:抱歉,我没有注意到发布日期,但是好吧......也许有人会觉得这个答案很有用(记得把连接器复制到服务器上,伙计们)。