0

今日、DataRoutines を使用して Access データベースに値を挿入しようとしています。ただし、レコードが作成されなかったため、うまく機能しませんでした。私のコードの何が問題なのか誰か知っていますか?

これは私の DataRoutines (dataroutines2) ファイルです

 public void CreateRecs(string strUserId)
{
    OleDbConnection mDB = new OleDbConnection();
    mDB.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data source="
        + Server.MapPath("~/App_Data/webBase.accdb");
    OleDbCommand cmd; OleDbDataReader rdr;
    string strSql;
    string strOFlag = "F";
    // check to see if there is an active order record
    strSql = "SELECT eStatus FROM enrolInfo WHERE eUserId = @UserId "
       + "ORDER BY eEnrolNo DESC;";
    cmd = new OleDbCommand(strSql, mDB);
    cmd.Parameters.Add("@UserId", OleDbType.Char).Value = strUserId;
    mDB.Open();
    rdr = cmd.ExecuteReader();
    Boolean booRows = rdr.HasRows;
    if (booRows) //when booRows is true, there are order records for the user
    {
        rdr.Read();
        if ((string)rdr["eStatus"] != "Ordering") //status of an active order is "Ordering"
        {
            strOFlag = "M"; //"T" means there is a need to create a new Orders record
        }
        else { strOFlag = "M"; }
        mDB.Close();
        if (strOFlag == "M")
        {
            //insert a new order record
            string strStatus = "Ordering";
            strSql = "INSERT INTO enrolInfo (eUserId, eStatus) VALUES (@UserId, @Status)";
            cmd = new OleDbCommand(strSql, mDB);
            cmd.Parameters.AddWithValue("@UserId", strUserId);
            cmd.Parameters.AddWithValue("@Status", strStatus);
            mDB.Open();
            cmd.ExecuteNonQuery();
            mDB.Close();
        }

        //get back order No - this order no is needed when the user buys an item
        strSql = "SELECT eEnrolNo FROM enrolInfo WHERE eUserId = @UserId "
            + "ORDER BY eEnrolNo DESC;";
        cmd = new OleDbCommand(strSql, mDB);
        cmd.Parameters.Add("@UserId", OleDbType.Char).Value = strUserId;
        mDB.Open();
        rdr = cmd.ExecuteReader();
        rdr.Read();
        Session["tOrderNo"] = rdr["eEnrolNo"]; //store the active order no in the sOrderNo
        mDB.Close();
        return;

    }
}

これは、ソリューションを登録ページの DataRoutines ファイルにルーティングするコードです。

               //prepare Session variables for newly register customer
            Session["sFlag"] = "M";
            Session["tUserId"] = (string)txtUserId.Text;
            Session["tName"] = (string)txtName.Text;
            Session["tAddress"] = (string)txtAddress.Text;
            Session["tTel"] = (string)txtTel.Text;
            Session["tEmail"] = (string)txtEmail.Text;
            String strUserId = (string)Session["tUserId"];
            DataRoutines2 DRObject = new DataRoutines2();
            DRObject.CreateRecs(strUserId);

ご協力いただきありがとうございます

4

0 に答える 0