0

Access から texbox にデータを収集できましたが、日付でエラーが発生しなくなります。日付を取得する方法はありますか、それとも不可能ですか? このサイトのどこにも、日付を文字列に変換してテキストボックスに表示するソウルイトンが見つかりません。何か助けがあれば、データベースの日付を文字列に変更する必要があります。

//Dates not displaying, only errors in the while loop
//strBirthday = dr["STU_BIRTHDAY"].ToString();  This won't diplay like the other 2 strings. 

protected void btnQuery_Click(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\collection\\database.accdb");
        string strQueryString = "SELECT STU_NAME, STU_ADDRESS, STU_BIRTHDATE FROM Students WHERE STU_ID = @SID";
        OleDbCommand com = new OleDbCommand(strQueryString, con);
        com.Parameters.AddWithValue("SID", txtStuID.Text.Trim());
        con.Open();
        OleDbDataReader dr = com.ExecuteReader();

        string strName = "";
        string strAddress = "";
        string strBirthday = "";

        while (dr.Read())
        {
            strName = dr["STU_NAME"].ToString();
            strAddress = dr["STU_ADDRESS"].ToString();
            strBirthday = dr["STU_BIRTHDAY"].ToString();   
        }
        txtStuName.Text = strName;
        txtStuAddress.Text = strAddress;
        txtStuBirthDate.Text = strBirthday;
        dr.Close();
        con.Close();
    }
4

3 に答える 3

1

DataReaderオブジェクトの「Get」メソッドを使用します。

DateTime dt = dr.GetDateTime("STU_BIRTHDAY");
txtBirthday = dt.ToString(CultureInfo.CurrentCulture, "yyyy-MM-dd");

一般的に、Object.ToString()は避けてください。

日付を文字列としてデータベースに保存しないでください。常にデータベースに組み込まれている「date」または「datetime」タイプを使用してください。また、日時の値をローカルではなくUTCとして保存します。

于 2013-02-07T09:07:46.860 に答える