學會了如何自已寫程式的時候又發現當資料量大的時候
會去google找說如何正規化~
正規化後的資料怎麼抓呢
相信對於剛接觸ASP.NET的人來說
都會使用內建的控制項來抓資料~
但到了比較熟了以後當然會想說自已來寫程式來抓資料
畢竟有些網頁不大適合使用這些控制項
學會了如何自已寫程式的時候又發現當資料量大的時候
會去google找說如何正規化~
正規化後的資料怎麼抓呢
現在就來介紹一下囉!
這邊範例是使用access(沒辦法筆者窮~><)
資料庫會有兩個資料表
一、program
主要還是id要有的
二、pdate
這邊會有主要的是id跟pid
pid就是program的id
順便一提我的program放的是課程因為課程大多都是固定的
而課程會有好幾次,所以我將課程的日期放入pdate裡
01
<table border="2" width="750" bordercolor="#000000" align="center" cellspacing="0" cellpadding="8">
02
<tr>
03
<td width="175" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">
04
<font size="2">課程名稱</font></td>
05
<td width="109" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">
06
<font size="2">時間</font></td>
07
<td bordercolor="#000000" bgcolor="#FECCCB" height="34" width="290" align="center">
08
<font size="2">課程大綱</font></td>
09
<td width="98" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">
10
<font size="2">備註</font></td>
11
12
13
</tr>
14
<%string strDbCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source="+ Server.MapPath("App_Data\\course.mdb");
15
//建立資料庫連結
16
OleDbConnection objCon = new OleDbConnection (strDbCon);
17
objCon.Open();
18
string strSQL = "SELECT * FROM program";
19
OleDbCommand objCmd = new OleDbCommand(strSQL, objCon);
20
OleDbDataReader objDataReader = objCmd.ExecuteReader();
21
//讀取資料
22
while (objDataReader.Read())
23
{
24
//建立正規化資料表的連結
25
string strSQL2 = "SELECT * FROM pdate where pid="+objDataReader[0];
26
OleDbCommand objCmd2 = new OleDbCommand(strSQL2, objCon);
27
OleDbDataReader objDataReader2 = objCmd2.ExecuteReader();
28
Response.Write("<tr>");
29
Response.Write("<td width='175'><font size='2'>【" + objDataReader[1] + "】<br>" + objDataReader[2] + "</font></td>");
30
Response.Write("<td width='109'><font size='2' face='Franklin Gothic Demi Cond'>");
31
//讀取正規化資料表的資料
32
while (objDataReader2.Read())
33
{
34
//判斷資料是否為null
35
if (!objDataReader2.IsDBNull(2))
36
{
37
38
DateTime mytime1 = Convert.ToDateTime(objDataReader2[2]);
39
DateTime mytime2 = Convert.ToDateTime(objDataReader2[3]);
40
41
42
if (mytime1.ToString("dd") == mytime2.ToString("dd"))
43
{
44
Response.Write(mytime1.ToString("M/d") );
45
}
46
else
47
{
48
49 Response.Write(mytime1.ToString("M/dd-") + mytime2.ToString("dd") );
50
}
51
}
52
if (objDataReader2.IsDBNull(4))
53
{
54
Response.Write("<br/>");
55
}
56
else
57
{
58
string memo = Convert.ToString(objDataReader2[4]);
59
Response.Write("("+memo+")<br/>");
60
}
61
}
62
63
objDataReader2.Dispose();
64
objDataReader2.Close();
65
66
Response.Write("</font></td>");
67
Response.Write("<td width='290'><font size='2'>" + objDataReader[3] + "</font></td>");
68
if(objDataReader.IsDBNull(10)){
69
Response.Write("<td width='98'>.</td>");
70
}
71
else{
72
Response.Write("<td width='98'><font size='2'>" + objDataReader[10] + "</font></td>");
73
}
74
Response.Write("</tr>");
75
i++;
76
}
77
objDataReader.Dispose();
78
objDataReader.Close();
79
objCon.Dispose();
80
objCon.Close();
81
%>
82
</table>
<table border="2" width="750" bordercolor="#000000" align="center" cellspacing="0" cellpadding="8">02
<tr>03
<td width="175" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">04
<font size="2">課程名稱</font></td>05
<td width="109" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">06
<font size="2">時間</font></td>07
<td bordercolor="#000000" bgcolor="#FECCCB" height="34" width="290" align="center">08
<font size="2">課程大綱</font></td>09
<td width="98" height="34" align="center" bordercolor="#000000" bgcolor="#FECCCB">10
<font size="2">備註</font></td> 11
12
13
</tr>14
<%string strDbCon = "Provider=Microsoft.jet.OLEDB.4.0;" + "Data Source="+ Server.MapPath("App_Data\\course.mdb");15
//建立資料庫連結16
OleDbConnection objCon = new OleDbConnection (strDbCon);17
objCon.Open();18
string strSQL = "SELECT * FROM program";19
OleDbCommand objCmd = new OleDbCommand(strSQL, objCon);20
OleDbDataReader objDataReader = objCmd.ExecuteReader();21
//讀取資料22
while (objDataReader.Read())23
{24
//建立正規化資料表的連結25
string strSQL2 = "SELECT * FROM pdate where pid="+objDataReader[0];26
OleDbCommand objCmd2 = new OleDbCommand(strSQL2, objCon);27
OleDbDataReader objDataReader2 = objCmd2.ExecuteReader();28
Response.Write("<tr>");29
Response.Write("<td width='175'><font size='2'>【" + objDataReader[1] + "】<br>" + objDataReader[2] + "</font></td>");30
Response.Write("<td width='109'><font size='2' face='Franklin Gothic Demi Cond'>");31
//讀取正規化資料表的資料32
while (objDataReader2.Read())33
{34
//判斷資料是否為null35
if (!objDataReader2.IsDBNull(2))36
{37
38
DateTime mytime1 = Convert.ToDateTime(objDataReader2[2]);39
DateTime mytime2 = Convert.ToDateTime(objDataReader2[3]);40

41
42
if (mytime1.ToString("dd") == mytime2.ToString("dd"))43
{44
Response.Write(mytime1.ToString("M/d") );45
}46
else47
{48

49 Response.Write(mytime1.ToString("M/dd-") + mytime2.ToString("dd") );
50
}51
}52
if (objDataReader2.IsDBNull(4))53
{54
Response.Write("<br/>");55
}56
else57
{58
string memo = Convert.ToString(objDataReader2[4]);59
Response.Write("("+memo+")<br/>");60
}61
}62
63
objDataReader2.Dispose();64
objDataReader2.Close();65
66
Response.Write("</font></td>");67
Response.Write("<td width='290'><font size='2'>" + objDataReader[3] + "</font></td>");68
if(objDataReader.IsDBNull(10)){69
Response.Write("<td width='98'>.</td>");70
}71
else{72
Response.Write("<td width='98'><font size='2'>" + objDataReader[10] + "</font></td>");73
}74
Response.Write("</tr>");75
i++;76
}77
objDataReader.Dispose();78
objDataReader.Close();79
objCon.Dispose();80
objCon.Close();81
%>82
</table>p.s 明明等一下就要出門了~硬是要寫一篇~~XD