我能够将Access中的数据收集到我的texbox中,但日期不会停止给出错误。有没有办法抓住日期或是不可能的?没有在这个网站上我可以找到一个souluiton将日期转换为字符串以显示到文本框中。任何帮助都很棒,或者我必须将数据库日期更改为字符串。
//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();
}
答案 0 :(得分:1)
使用DataReader对象的“Get”方法:
DateTime dt = dr.GetDateTime("STU_BIRTHDAY");
txtBirthday = dt.ToString(CultureInfo.CurrentCulture, "yyyy-MM-dd");
一般来说,避免使用Object.ToString()。
永远不要将日期作为字符串存储在数据库中,始终使用数据库的内置“日期”或“日期时间”类型。还将日期时间值存储为UTC,绝不是本地的。
答案 1 :(得分:0)
string strNewDate = startDate.ToString("yyyyMMdd");
您可以使用任何格式。在我的情况下,我使用了"yyyyMMdd"
,但有很多格式。
答案 2 :(得分:0)
看看:-
方法1:
string strQueryString = "SELECT STU_NAME, STU_ADDRESS,
CONVERT(varchar,STU_BIRTHDATE,103) as STU_BIRTHDATE
FROM Students WHERE STU_ID = @SID";
方法2:
string strQueryString = "SELECT STU_NAME, STU_ADDRESS,
FORMAT(STU_BIRTHDATE, "dd/mm/yyyy") as STU_BIRTHDATE
FROM Students WHERE STU_ID = @SID";