#asp.net #mysql
#asp.net #mysql
Вопрос:
В настоящее время у меня есть таблица SQL с именем Attendance и другая таблица с именем Student. Таблица посещаемости содержит поля: AttendanceID, Date, Present, StudentID и идентификатор модуля. В моей таблице student есть поля StudentID и Name. Одна страница в моем приложении позволяет пользователю вводить идентификатор студента в текстовое поле, где все данные date, present, ModuleID из таблицы посещаемости отображаются в Gridview для соответствующего идентификатора студента, который вводится в текстовое поле. Вот мой код, который пока работает:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:RegisterConnectionString %>"
SelectCommand="SELECT * FROM [Attendance] WHERE ([StudentID] = @StudentID)">
<SelectParameters>
<asp:ControlParameter ControlID="pnumTextBox" Name="StudentID"
PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server"
style="position:absolute; top: 241px; left: 357px; width: 356px;"
AutoGenerateColumns="False" DataKeyNames="AttendanceID"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="AttendanceID" HeaderText="AttendanceID"
InsertVisible="False" ReadOnly="True" SortExpression="AttendanceID" />
<asp:CheckBoxField DataField="Present" HeaderText="Present"
SortExpression="Present" />
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="StudentID" HeaderText="StudentID"
SortExpression="StudentID" />
<asp:BoundField DataField="ModuleID" HeaderText="ModuleID"
SortExpression="ModuleID" />
</Columns>
</asp:GridView>
Наряду с отображением AttendanceID, StudentID, ModuleID, Present и даты, мне нужно отобразить поле имени студента из таблицы Student, которое имеет тот же идентификатор, что и введенный в текстовом поле, как мне этого добиться? Я думаю, что это можно сделать с помощью команды SELECT, но я не уверен, как. Любая помощь приветствуется, заранее спасибо!
Ответ №1:
SELECT A.AttendanceID,A.Date,A.Present,A.ModuleID,S.StudentID,S.Name
FROM attendance A ,student S
WHERE A.StudentID = S.StudentID
AND S.StudentID = "Your Value from the textbox";
ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ
Я предпочитаю использовать objectDataSource
, а не SQLDataSource
. для разделения ваших слоев.и используйте parameterized query
, чтобы избежать внедрения sql и проверить запись пользователя.
Комментарии:
1. Хорошо, спасибо за ваш ответ, но я только новичок, когда дело доходит до asp.net и MySQL, что вы имеете в виду, используют параметризованный запрос, чтобы избежать внедрения sql? Спасибо
2. вы будете изучать все эти концепции изо дня в день, не волнуйтесь, я имею в виду использование параметров, а не написание сложного запроса. Посмотрите на эту ссылку: databasejournal.com/features/mssql/article.php/3834501 /…