RESTful APIを使用してMySqlデータベースからデータを挿入および取得しようとしています。挿入クエリを実行すると、例外メッセージが表示されます。接続を有効にして開く必要があります。MySql例外:接続を有効にして開く必要があります。 C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data;
using WorkAppApi.Models;
namespace WorkAppApi
{
public class DBConn
{
private MySql.Data.MySqlClient.MySqlConnection conn;
public DBConn()
{
string myconnstr;
myconnstr = "server=192.168.0.103;uid=root;pwd=ganga10lfc;database=readingmeterdb";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = myconnstr;
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
}
}
public long addMachine(machines machinetosave)
{
String sqlstr = "INSERT INTO machines (machineDesc) VALUES ('" + machinetosave.MachineDesc + "')";
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sqlstr,conn);
cmd.ExecuteNonQuery();
long id = cmd.LastInsertedId;
return id;
}
}
}
"メッセージ": "エラーが発生しました。"、 "ExceptionMessage": "接続が有効と開いている必要があります。"、 "ExceptionType": "System.InvalidOperationExceptionが"、 「のStackTrace ":" MySql.Data.MySqlClient.MySqlCommand.CheckState()で\ r \ n MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehaviorビヘイビア)\ r \ n MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()\ r \ n WorkAppApi.DBConn.addMachine(マシンmachinetosave)C:\ Users \ User \ Desktop \ WorkAppApi \ WorkAppApi \ DBConn.cs:WorkAppApi.Controllers.MachinesController.Post(machines値)の行41 \ r \ n C:\ Users \ User \ Desktop \ WorkAppApi \ WorkAppApi \ Controllers \ MachinesController .cs:行31 \ r \ nでlambda_method(Closure、Object、Object [])\ r \ n System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutorにあります。 012.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance、Object [] arguments)\\ \ n System.Webにある、> c__DisplayClassc.b__6 Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContextControllerContext、IDictionary`2引数、CancellationToken cancellationToken)\ r \ n ---例外がスローされた前の場所からのスタックトレースの終了--- System.Runtime.CompilerServicesでの\ r \ n .TaskAwaiter.ThrowForNonSuccess(タスクタスク)\ System \ Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ r \ n System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\ r \ n ---例外がスローされた前の場所からのスタックトレースの終了--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスクタスク)での\ r \ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotificationでの\ r \ nタスクタスk)\ r \ n System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\ r \ n ---例外がスローされた前の場所からのスタックトレースの終了---システムで\ r \ n。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスクタスク)\ r \ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ r \ n System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() "
ほとんどの場合、DBConn()で接続を開いているときに目に見えない例外があります。そこに例外を記録しておけば、後で失敗する理由が考えられます –