2017-03-13 3 views
-2

で処理されていなかった私はlocalhostのMySql.Data.dllが、ユーザーコード

上のMySQLデータベースに私のasp.netのWebフォームアプリケーションを接続していたとき、私はC#で新しいプログラマ午前私はこのエラーを取得:

を私はをfo

を助ける必要がある理由

「System.InvalidOperationException」種類の例外は

をMySql.Data.dllで発生したが、ユーザーコードで処理されませんでした私はその特定のソリューションを使用する方法を知りません。

私は、MySQLに接続して、私のコードがある単純なSQLコマンド を呼び出すようにしようとしています私のコードで私のコード

について

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Newtonsoft; 
using Newtonsoft.Json; 
using System.Diagnostics; 
using MySql.Data; 
using MySql; 
using MySql.Data.MySqlClient; 

namespace WebApplication2 

{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     MySqlConnection connection; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       CheckMysqlConnection(); 
      }  
      UploadToMysqlDatabase(); 
      } 

    private void CheckMysqlConnection() { 

     //connection string 

      string connectionString = @"Server=localhost;Database=ev3;Uid=root;Pwd=;"; 
      using (connection = new MySqlConnection(connectionString)) 
      { 
      if(connection.State != System.Data.ConnectionState.Open) 
      { 
        connection.Open(); 
        Response.Write("Mysql Connection Succesful"); 
       } 


      } 


    } 

    private void UploadToMysqlDatabase() { 
     //Debug.WriteLine(objekt.portId); 
     MySqlCommand cmd = new MySqlCommand("SELECT * FROM robot",connection); 


     cmd.ExecuteNonQuery(); ***// there is error*** 

     //connection.Close(); 
    } 
} 

エラー詳細

System.InvalidOperationException was unhandled by user code 
    HResult=-2146233079 
    Message=Connection must be valid and open. 
    Source=MySql.Data 
    StackTrace: 
     v MySql.Data.MySqlClient.ExceptionInterceptor.Throw(Exception exception) 
     v MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex) 
     v MySql.Data.MySqlClient.MySqlCommand.CheckState() 
     v MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 
     v MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() 
     v WebApplication2.WebForm1.UploadToMysqlDatabase() v C:\Users\Jan\Dropbox\infs1\insys2\WebApplication2\WebApplication2\WebForm1.aspx.cs:řádek 78 
     v WebApplication2.WebForm1.Page_Load(Object sender, EventArgs e) v C:\Users\Jan\Dropbox\infs1\insys2\WebApplication2\WebApplication2\WebForm1.aspx.cs:řádek 45 
     v System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
     v System.Web.UI.Control.OnLoad(EventArgs e) 
     v System.Web.UI.Control.LoadRecursive() 
     v System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+0

あなたの接続が配置されている! –

+0

これは、接続不良の扱いから来ています。しかし、とにかく、あなたの質問に実際のエラーメッセージを追加してください。 – mason

+0

そして、私は接続を切断するとどうしたらいいですか? –

答えて

0

connection.Open()がの中にラップされている場合ステートメントが終了すると自動的に破棄されます(今後の使用のために開かなくなります)。完全に別の方法で廃棄接続を使用しようとしています。何をする必要があるprivate void UploadToMysqlDatabase()メソッドを呼び出し、パラメータとしてを通じて接続を渡す(すなわち。private void UploadToMysqlDatabase(string conn)、またはあなたのUploadToMysqlDatabase()方法で新しいconnection.Open()を作成するのいずれかである。

+0

ありがとうございました。 –

+0

接続は、適切に処理されているかどうかを確認するのが難しいため、メソッドからメソッドに渡さないことをお勧めします。理想的には、接続が必要な場合は、必要な場所でusingステートメントで囲んで作成します。 – mason

+0

新しいことを学ぶ毎日新しい:) –

関連する問題