查看: 1715|回复: 6
|
做assignment遇到问题~求助 VB.NET
[复制链接]
|
|
发表于 26-10-2014 10:41 AM
|
显示全部楼层
你blabalbla那边的code,好像有问题。 给看完整的source code。 blabalbla |
|
|
|
|
|
|
|

楼主 |
发表于 26-10-2014 02:44 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 26-10-2014 05:26 PM
|
显示全部楼层
上面的: OleDbCommand你需要release了, 才可以execute过。
下面的:connection开了2次就是问题了和reader也有问题。
debug中学习吧。 |
|
|
|
|
|
|
|
发表于 20-12-2014 11:21 PM
|
显示全部楼层
本帖最后由 musicalangel 于 20-12-2014 11:27 PM 编辑
這會有點長, 來個深呼吸 (PS: 我光看你的"問題hor" 就反覆看了N遍阿)
现在的问题是hor,我不知道要如何save Student_ID 和Subject_ID进去
這個問題分3個部分
部分1: Student ID
你原本的code 長這樣
- ' obtain id
- sql = "select MAX(Student_ID) from Student";
- cmd=New OleDbCommand(sql, con);
- .
- .
- .
- Return RegisterStudentInformation();
复制代码
這邊有兩個問題, 就是last insert id 的概念, 請參考這個:
get last insert id from access
所以應該改成這樣
- ' obtain id
- sql="select @@IDENTITY from Student";
复制代码
原因, @@IDENTITY比較像是程式的暫存變數, 你select 他的過程就不需要經過MAX函式的運算, 資料大的時候可以省下很多時間
然後Student ID 應該暫存在廣域變數裡面(也就是不要放在任何function 裡面)
例如:
- Public int Student_ID
- Private Function RegisterStudentInformation() as Integer
复制代码
RegisterStudentInformation()將近完成的時候, 將select @@IDENTITY 回來的變數存入這個廣域變數, 這樣你在別的function就能取到它的值
(如果你不確定廣域變數怎樣使用的話, 從介面拉一個hidden欄位來做為暫存student_id的變數也可以)
部分2: Subject_ID
這邊我們要討論的東西就很多
1) select 的時候不要用名字做為條件
例如:
- sql="select * from subject where subject_name ='" & s &"'";
复制代码
這邊會產生很多問題, 例如如果你有兩個科目類似名稱, 到時候你的select 會產生多個結果,
那個學生本來報名1個馬來文, 可能會變成報名2個科目
在你gererate step2 的時候, checkbox的Text就以ID做開頭
例如:
- (1)Subject Name:BM...
- (2)Subject Name:BI...
复制代码
然後在Looping整個checkbox的時候, 就用split 來擷取subject的ID
例如:
- '先split 第一次, 將ID跟其他資訊分開
- s=split(cboxSubject.CheckedItem(i),")");
- '在split 第二次, 去掉前掛號
- s=split(s(0),"(");
- ' 最後剩下的就是ID, 就可以拿來當insert 的值
- sql="insert into StudentTakeSubject(Student_ID,Subject_ID) value ('" &Student_ID& "','"& s(1) &"')";
复制代码
部分3:效能改善
有幾點你要注意
1) select 的時候儘量不要使用 *
原因很簡單, 如果你只單單select ID vs select *
它的時間好像是 0.01 s vs 0.03 s
整體來說會拖垮你的程式應用的流暢度
2) Student Information, Subject 都有Primary Key, 這沒有問題
但StudentTakeSubject是關聯table, 所以裡面的 Student_ID 跟 Subject_ID請建立index, 確保資料scale up的時候不會出現任何緩慢的情形
這邊需要注意一下, 我不會寫VB, 所以我這邊打的純粹是概念, 請不要copy paste
還有, 如果可以的話, 請我一杯Starbuck XD, 我花了2小時來解答
有問題再詢問
共勉之. |
|
|
|
|
|
|
|

楼主 |
发表于 22-3-2015 11:38 PM
|
显示全部楼层
太感谢你了!有缘请你喝starbucks
|
|
|
|
|
|
|
|
发表于 3-4-2015 01:12 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|