私が働く会社は、MySQLをバックエンドとしてC#ASP .Netフロントエンドで使用する予定のプロジェクトがあります。私は一緒にテストアプリケーションとデータベースを投げた、そして、私は任意のprocを呼び出すしようとする場合を除いて、大部分は美しく動作するように見える、それは最初の呼び出しではなく、次は、再び、そして、一度おきにしか動作しません。MySQLストアドプロシージャは.Net経由で他のすべての呼び出しを処理します
毎回procを呼び出すためにworkbenchを使用すると、VS2010でDBに接続する場合と同じように、失敗するのはアプリケーションコードだけです。私は、毎回接続が開かれ、閉じられている(そして処分されている)ことをかなり明示していますが、運がないとはっきりしています。
サンプルクエリです。これは私が一番使っているprocです:
SELECT
U.id,
U.First_Name,
U.Last_Name,
U.Birth_Date,
U.Created,
U.Password
FROM
test.user U;
ご覧のとおり、それは信じられないほど簡単です。しかし、そのprocだけではありません。私は任意の順序で任意のprocsを呼び出して、同じ結果を得ることができます。私がprocを使用しないコードでクエリを呼び出すと、それはうまく動作しますが、会社が使用するモデルはデータベース(MSSQL)への呼び出しごとにprocsであり、持ち歩きたいものですこのアプリケーションと同じ基準でも同様です。ただ、ここでは、徹底すべき
は、接続文字列(もちろん変更された値)である:
Server=127.0.0.1;Port=3306;Data Source=localhost;Database=testdb;User Id=test_user;Password=pword;
そして次は、データベース・マネージャーの一番上にある:
私が実行しています"using"ブロックを持つコネクション、コマンド、データアダプタを実行した後、それらが適切に処分されていることを確認し、安全のためだけに処分を宣言することさえ試みました。行動を変えるものはありません。
誰もこれまで見たことがありますか?問題が発生した場合は、すべてがローカルで実行されています。ここで
は、呼び出しを行うコードである、と私はそれを自分で解決していることがあります。
のpublic staticのDataTable SPExecuteTable(文字列CommandTextを= ""、リストパラス= null)を { のDataTable dtを=新しいのDataTableを( ); 例外ex = null;
using (MySqlConnection conn = new MySqlConnection(MySQL_Connection))
{
using (MySqlCommand com = MySQlComnd(commandText, paras))
{
try
{
conn.Open();
com.Connection = conn;
using (MySqlDataAdapter oda = new MySqlDataAdapter())
{
oda.SelectCommand = com;
oda.Fill(dt);
}
}
catch (Exception e)
{
ex = e;
}
finally
{
conn.Close();
}
}
}
if (ex != null)
throw ex;
return dt;
}
あなたの実際の呼び出しコードを表示してください... –