2

私のコードは主にファイルからいくつかのデータを読み取り、それを mySql データベースに保存します。insert sql クエリを使用してから、select sql クエリを使用してデータベース内のすべてのデータを読み取りました。

このコードを実行すると、「Key cannot be null.\r\nParameter name: key} System.Exception {System.ArgumentNullException}」というエラーが表示されます。

どうすればこれを修正できますか?

private void bindGrid()//データベースに接続する関数 {

        string DocID = User.Identity.Name.ToString();

        string connectionString = "server=127.0.0.1;"
                                  + "database=hospital;"
                                   + "uid=root;"
                                   + "pwd=missy3asoola;";

        MySqlConnection conn = new MySqlConnection(connectionString);

        try
        {
            conn.Open();
            StreamReader objReader = new StreamReader("D:/Senior/WebApplication-metbhdelaXD/WebApplication2/Textfile.txt");
            string sLine = "";
            ArrayList arrText = new ArrayList();

            while (sLine != null)
            {
                sLine = objReader.ReadLine();
                if (sLine != null)
                    arrText.Add(sLine);
            }
            objReader.Close();

            MySqlCommand cmdread = new MySqlCommand();
            cmdread.Connection = conn;
            //Defining Mysql Parameters
            MySqlParameter Temperature, Pulserate, Timestamp, Doctor_idDoctor, Personal_PatientID;
            Temperature = new MySqlParameter();
            Pulserate = new MySqlParameter();
            Timestamp = new MySqlParameter();
            Doctor_idDoctor = new MySqlParameter();
            Personal_PatientID = new MySqlParameter();
            //Defining Types
            Temperature.MySqlDbType = MySqlDbType.Int32;
            Pulserate.MySqlDbType = MySqlDbType.Int32;
            Timestamp.MySqlDbType = MySqlDbType.Timestamp;
            Doctor_idDoctor.MySqlDbType = MySqlDbType.Int32;
            Personal_PatientID.MySqlDbType = MySqlDbType.Int32;
            //Defining values
            Temperature.Value = arrText[0];
            Pulserate.Value = arrText[1];
            Timestamp.Value = arrText[2];
            Doctor_idDoctor.Value = arrText[3];
            Personal_PatientID.Value = arrText[4];

            //cmdread.Parameters.Clear();
            //Adding parameters
            cmdread.Parameters.Add(Temperature);
            cmdread.Parameters.Add(Pulserate);
            cmdread.Parameters.Add(Timestamp);
            cmdread.Parameters.Add(Doctor_idDoctor);
            cmdread.Parameters.Add(Personal_PatientID);
            cmdread.Connection = conn;
            cmdread.CommandText = "INSERT INTO medical(Temperature,`Pulse rate`,Timestamp,Doctor_idDoctor,Personal_PatientID)VALUES([@Temperature],[@`Pulse rate`],[@Timestamp],[@Doctor_idDoctor],[@Personal_PatientID]);";
            cmdread.CommandType = CommandType.Text;

            cmdread.ExecuteNonQuery();

            cmdread.Dispose();


            string sqlQuery1 = "Select * from medical where Doctor_idDoctor=" + DocID;

            MySqlCommand cmdmedical = new MySqlCommand(sqlQuery1, conn);

            GridView1.DataSource = cmdmedical.ExecuteReader() ;  //ex reader for retrieving
            GridView1.DataBind();
            conn.Close();

        }
        catch (Exception ex)
        {
            Response.Write(ex.StackTrace);
        }



    }
4

1 に答える 1

3

テキスト ファイルの値をパラメータに適用していません。これを行わず、列がnull不可の列である場合、例外が発生します。これがまさにここで起こっていることです。

次のように変更する必要があります。

cmdread.Parameters.Add("@Temperature",MySqlDbType.Int32, 5).Value = //value from text file;
cmdread.Parameters.Add("@Pulse rate", MySqlDbType.Int32, 3).Value = //value from text file;
cmdread.Parameters.Add("@Timestamp", MySqlDbType.Timestamp, 15).Value = //value from text file;
cmdread.Parameters.Add("@Doctor_idDoctor", MySqlDbType.Int32, 3).Value = //value from text file;
cmdread.Parameters.Add("@Personal_PatientID", MySqlDbType.Int32, 3).Value = //value from text file;

また、列名とパラメーター名にスペースを使用しないようにしてください。私はに変更@Pulse rateします@PulseRate


cmdread.ExecuteNonQuery()さらに、戻り値をDataSource として GridView に渡す理由がわかりません。これは正しくないようです。

于 2012-04-10T11:49:43.423 に答える