2013-07-22 58 views
0

我正在使用Visual Web Developer 2010爲學校創建一個「項目」。這很簡單。將文本框與sql數據庫比較,插入sql命令

這個想法是針對醫療機構的患者自助登機亭。

我已經有我的SQL數據庫創建了以下內容:

Table: Doctors 
Fields: Doctor_ID (PK), Doctor_F_Name, Doctor_L_Name 

Table: Patients 
Fields: Patient_ID (PK), Patient_F_Name, Patient_L_Name 

Table: Appointments 
Fields: Appointment_ID (PK), Appt_Day, Appt_Mo, Appt_Yr, Patient_ID (SK), Doctor_ID (SK), Appt_Time, Appt_Reason, Checked_In 

因此,代碼的第一頁有一個簡單的佈局與3文本輸入框,要求患者姓,名,而去年4個SSN(Patient_ID)和一個提交按鈕。

我想從文本框中的數據用於與數據庫進行比較,並詢問「您是否在這裏簽到您的約會今天在(Appt_Time)與(博士Doctor_L_Name)爲( Appt_Reason)),然後一個複選框或下拉的是或否,如果選擇是,那麼它插入一個「1」(binary)到checked_in場

我得到的文本框和按鈕創建:

<script runat="server"> 
sub submit (sender as object, e as eventargs) 
lbl1.text= "Hello, " & Textbox1.text &" " & Textbox2.Text 
end sub 
</script> 

<h2> First Name </h2> 
<asp:textbox id=Textbox1" runat"server" /> 
<h2> Last Name </h2> 
<asp:textbox id=Textbox2" runat"server" /> 
<h2> Last 4 of SSN </h2> 
<asp:textbox id=Textbox3" runat"server" /> 
<asp:button: ID="Button1" onclick="submit" runat="server" text="submit" /> 
<asp::label id="lbl1" runat="server" /> 

下面我有幾個調試檢查,以確保與sql通信服務器工作正常,我可以拉表信息到一個gridview沒有問題,使用下面的連接設置:

<asp:sqldatasource id="sqldatasource3" runat="server" connectionstring="<%$ connectionstrings:PB_MedicalConnectionString %>" 
selectcommand="select * from [Patients]" /> 

然後運行一個GridView:

<asp:gridview id="gridview1" runat="server" datakeyNames="Patient_ID" Datasource="sqldatasource3"> 
<columns> 
<asp:boundfield datafield="Patient_ID" HeaderText="Patient_ID" ReadOnly="True" SortExpression=""Patient_ID" /> 
<asp:boundfield datafield="Patient_F_Name" HeaderText="Patient_F_Name" ReadOnly="True" SortExpression=""Patient_F_Name" /> 
<asp:boundfield datafield="Patient_L_Name" HeaderText="Patient_L_Name" ReadOnly="True" SortExpression=""Patient_L_Name" /> 
</columns> 
<//asp:gridview> 

這成功地返回了「病人」已進入數據庫。

任何幫助創建/完成這將是偉大的。我越來越很累搜索技巧,嘗試,失敗的搜索,嘗試,失敗的.....

感謝, 埃裏克

+1

Eric,恭喜你迄今爲止所做的一切!歡迎來到Stack Overflow。我在這裏說:「這是我完成的代碼,爲我完成我的學校項目」。雖然我可以感受到你的挫敗感,但有一句老話:「給一個人喂一條魚,他會餓死1000年,教一個人釣魚,他會吃1000年」。因爲我們不能「爲你完成作業」,請詢問關於你的問題的具體問題。編程是:「嘗試,失敗的搜索,嘗試,失敗.....」 – logixologist

+0

我遇到的問題是我不知道如何把輸入的數據和比較它的表,採取有效的條目並返回到網絡頁面,然後在選擇「是」後完成插入。我猜我需要編寫一個if/then/else,這是我在python中完成的,我只是不知道如何將它轉化爲asp,因此它是可用的。 AMD。爲了記錄,這不是一項家庭作業,它更像是一個自我分配的項目,我不是在尋找它完成,我正在尋求幫助,接下來的代碼,等等。 –

+0

對不起,我犯了一個錯誤在邏輯...必須更新它重新措辭。讓我知道,如果這種解釋應該如何工作。 – logixologist

回答

0

下面是一些很好的建議:

不要直接使用在一個ASP頁面的SQL中。它始終推薦,不再是調用的簡單和簡單,在SQL中使用存儲過程,並讓asp.net頁面調用帶有參數的存儲過程。他們所謂的「SQL注入」有一些問題,它允許用戶通過輸入框向您的SQL服務器注入惡意代碼。

您在初始代碼中有SELECT * FROM。它能夠更好地拼出要display.I也可能會要求在我的SQL存儲過程where appointmentdate = getdate()列,或者如果你堅持內聯SQL,因爲它不能被注入:selectcommand = "SELECT fieldname from appointments where appointmentdate =" & "'" & now.date.tostring() & "'"

邏輯如何尋找約會並在登記

假設你是在default.aspx頁面上,並且用戶鍵入他們的名字和ssn。您將從通過firstname,lastname和ssn的代碼調用存儲過程。如果它完全返回一行response.redirect("checkIn.aspx?id=" & returnedIdFromSproc)

在該頁面上,您將顯示「使用兩個按鈕進行登記」的問題。是或否。在後面是你打電話通過身份證檢查通過,並沒有你response.redirect("default.aspx")

如果簽入成功,您使用returnedIdFromSproc並將其傳遞到另一個將更新作爲checkedIn的sproc。

這有幫助嗎?

+0

「select * from」背後的原因僅僅是爲了測試sql連接以確保asp頁面正在從數據庫讀取(調試),並且將被刪除或從最終產品中註釋掉。代碼去哪裏做SQL注入? Global.asax中? –

+0

我的想法是,但我想指出的是,對於少數人來說,它可能不會有所作爲,但在某些時候,「約會」表格將變得非常龐大,修復它然後可能會出現問題。 – logixologist

+0

oops,我的意思是存儲過程 –