1

mysql データベースの列の平均を計算し、それを変数に保存して、正規分布の分散を見つけるなどのさらなる計算に使用できるようにしようとしています。ただし、コードを実行してもエラーは表示されませんが、データベースも読み取られません。コードにチェックポイントを追加して、どこまで進んでいるかを確認しました。プログラムは、チェックポイント 2 の前に「データベースが選択されていません」という例外メッセージを表示しています。

decimal proteinAvg;

        string myConnection = "datasource=localhost;port=3306;username=root;password=root"
        string Query = "SELECT AVG(Protein) AS proteinAvg FROM nutritioncalculator";
        MySqlConnection myConn = new MySqlConnection(myConnection);
        MySqlCommand cmdDatabase = new MySqlCommand(Query, myConn);
        MySqlDataReader myReader;


try
{
   myConn.Open();
   //checkpoint1
   MessageBox.Show("connected");
   myReader = cmdDatabase.ExecuteReader();
   //Checkpoint2

   MessageBox.Show("connected");
   while (myReader.Read())
   {
      //checkpoint3
      MessageBox.Show("connected");
      proteinAvg = (decimal) myReader["proteinAvg"];
      MessageBox.Show("Your protein intake should be around" + proteinAvg);
   }
4

2 に答える 2

0

ここのコードにはいくつか問題があります。回答でそれらを強調します。

decimal proteinAvg;
// MySql uses 'database' and not 'Initial Catalog' like Sql does.
string myConnection = string myConnection = "datasource=localhost;Database=mydatabase;port=3306;username=root;password=root";  // MySql uses 'database' to define the DB name.
string Query = "SELECT AVG(Protein) AS proteinAvg FROM nutritioncalculator";

// Wrap your connection and command objects in 'using' blocks.  
// Both implement IDisposable and will be managed by GC once 
// they fall out-of-scope. 
using (MySqlConnection myConn = new MySqlConnection(myConnection))
{   
   using (MySqlCommand cmdDatabase = new MySqlCommand(Query, myConn))
   {
      MySqlDataReader myReader;
      try
      {
         myConn.Open();
         //checkpoint1
         MessageBox.Show("connected");
         myReader = cmdDatabase.ExecuteReader();
         //Checkpoint2

         MessageBox.Show("connected");
         while (myReader.Read())
         {
            //Checkpoint3
            MessageBox.Show("connected");
            proteinAvg = (decimal) myReader["proteinAvg"];
            MessageBox.Show("Your protein intake should be around" + proteinAvg);
         }
      }
   }
}
于 2013-11-14T20:51:11.780 に答える