数据库导航器






3.38/5 (8投票s)
2004年10月5日
3分钟阅读

65651

1070
一种使用 VCR 式控件轻松浏览记录的方法。
引言
我不确定是 Google 不起作用,还是仅仅是我的问题。 我已经在网上冲浪了好几天,搜索一个简单问题的简单解决方案:能够使用 VCR 式控件浏览数据库(我不敢相信我说了 VCR……我的意思是 DVD 控件。)
在 ASP.NET 中,从一条记录移动到另一条记录最简单的方法是放置一个 datagrid 或 datatable,但这正是我不想使用的。
我也遇到过一个 C# 软件,它与数据库导航器几乎一样,但代码非常 难以理解(至少对我而言……当然)。 由于有截止日期且手头没有解决方案,这就是我开发的,顺便说一句,它运行良好
第一次尝试
作为第一种方法,我创建了 4 个基本按钮和一个绑定到不同文本框的数据集。 我还创建了一个指向当前记录位置的索引,我将其存储在会话变量中,并在我按下不同的导航按钮时进行更改; 它生成了一条新的 SQL 指令,仅请求我必须在那个确切时刻放在屏幕上的特定记录,而且一切看起来都很好,直到我在数据库中间删除了一条记录,我得到的只是一个错误屏幕。 我意识到这种方法行不通。
解决方案
在尝试了许多不同的选择之后,我考虑使用一个 datagrid 来保存所有记录,但对用户隐藏,并且只在文本框中显示数据:现在我可以将所有信息放在表单的任何地方,而不是放在一个表格中,就像默认实现的那样…… 并且是的! 这次它奏效了!
安装
创建一个新的 ASP.NET VB 空项目,名为“databaseNavigator”; IIS 的默认文件夹和我们的项目应该在:C:\Inetpub\wwwroot\databaseNavigator'。 只需用 ZIP 文件中包含的内容覆盖该目录的内容即可。
数据库
在这个例子中,我还包含了一个小的 MS-Access 数据库,但我使用 MySQL 创建了应用程序。 我使用向导,因为我认为它更容易(尽管它也有一些不为人知的领域,我知道……我将在不久的将来写一篇关于它的文章)
关注点
DatabaseNavigator 将信息存储在两个会话变量中,actualRecordPosition 和 totalNumberOfRecords。 totalNumberOfRecords 在 Page_Load() 期间获取其值,计算表中的所有记录
dbConnection.Open()
SQL.CommandText = "SELECT COUNT(*) FROM membersTable"
Session("totalNumberOfRecords") = SQL.ExecuteScalar
dbConnection.Close()
dbAdapter.Dispose()
然后适配器被释放。 DatabaseNavigator 仅为单向通信(只读自数据库)。 我即将完成一个双向通信版本,其中包括 INSERT、UPDATE 和 DELETE 命令。
以下是 NEXT 按钮的代码,它基本上是增加记录位置的计数器,除非我们站在数据库的末尾。
Private Sub NEXTbutton_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles NEXTbutton.Click
Dim ARPTemp As Integer = CType(Session("actualRecordPosition"), Integer)
Dim TNRTemp As Integer = CType(Session("totalNumberOfRecords"), Integer)
If ARPTemp < TNRTemp Then
ARPTemp += 1
End If
Session("actualRecordPosition") = ARPTemp
updateInfo()
End Sub
最后,update()
子程序更新屏幕中的所有信息
Private Sub updateInfo()
hiddenDatagrid.SelectedIndex = (Session("actualRecordPosition".ToString) - 1)
TotalNrOfRecordsTextbox.Text = Session("totalNumberOfRecords".ToString)
currPositionInDbTextbox.Text = (Session("actualRecordPosition".ToString))
selectedIdInDbTextbox.Text = hiddenDatagrid.SelectedItem.Cells(0).Text
idTextbox.Text = hiddenDatagrid.SelectedItem.Cells(0).Text
firstNameTextbox.Text = hiddenDatagrid.SelectedItem.Cells(1).Text
lastNameTextbox.Text = hiddenDatagrid.SelectedItem.Cells(2).Text
ageTextbox.Text = hiddenDatagrid.SelectedItem.Cells(3).Text
最后的寄语
好吧,我希望这篇文章对您有所帮助,就像写作对我有所帮助一样。 如果您有任何意见,请随时与我联系:julianarevalo [at] hotmail.com。 祝您好运,感谢您的阅读!