ASP.NET图书馆管理信息系统

摘  要

本文首先阐述了基于.NET Framework平台的图书馆管理信息系统的开发背景以及其实践意义,其次说明了图书馆管理信息系统的功能以及相比同类软件的创新之处。然后就图书馆管理系统开发中所使用的一些的技术进行研究探讨。主要针对数据库的设计技术、存储过程技术、ADO.NET技术以及用SQL Server .NET Framework 数据提供程序访问SQLserver2000数据库技术四个方面进行了研究。最后还附上了图书馆管理信息系统的安装说明、简单使用说明和一些通用性的经典代码。笔者化了大量的时间用于程序设计,这也是笔者工作的重点,所开发的软件具有实用价值,所编写的代码对.NET程序员也有很好的参考性。在系统的开发过程中,笔者深刻体会到了.NET平台的强大性、优越性以及存储过程在提高数据访问性能和增强数据访问安全性上所起到的重要作用。此外,对于关系代数在数据库科学里的应用,笔者在编程过程中也做了一定的研究。

关键词: 数据库;.NET Framework;ADO.NET;存储过程;SQL Server .NET Framework 数据提供程序

图书馆管理系统基于Microsoft公司最新的.NET Framework平台构建,编码的基本语言是VB.NET。开发过程中统一使用.NET框架的数据类型、方法,抛弃了原来vb6的内容。充分体现了.NET的优越性,使软件易安装部署、易维护。系统使用ADO.NET+SQLserver2000模式,数据层基本都基于存储过程构建,使得速度更快、安全性更高。

2.1 系统提供的功能:

针对图书馆管理员设计的部分

管理部分是一个基于WinForms的windows窗体应用程序,主要为图书馆管理人员提供服务。截图如下:

管理部分提供以下功能:

  1. 用户功能。(提供登陆验证、用户切换,管理员锁定系统等功能。)
  2. 事务处理

图书证挂失管理。(可以针对读者情况对图书证进行挂失,以防冒借。)

借书、还书管理。(实现日常图书借阅及归还。)

  1. 数据管理

图书、读者管理。(实现图书、读者的添加,删除,编辑。)

  1. 综合查询统计。(可以根据不同条件的组合检索图书或读者以及借阅数据,对检索出来的数据可提供多种方式的操作:导出为Excel格式、pdf格式、或导出为水晶报表以便打印等。)
  2. 系统设定。(设置一些图书馆基本规则,如读者类别、图书类别、读者借阅最大天数等,此外设定数据服务器信息也在这里。)
  3. 帮助功能。(提供一个chm帮助文档,帮助图书馆工作人员快速适应本系统,此外还提供在线问题反馈,软件更新提示等功能。)

针对读者设计的部分:

由于读者的多元性和位置不确定性,该部分采取基于B/S的方式实现。代码使用ASP.NET编写,利用ASP.NET的优点,可以自动适应多种客户浏览器。截图如下:

|---|---------------------------------------------------------------------------------------------------|
| |
| | |

读者只需要有一台联网的计算机和一个常用WEB浏览器。就可以轻松的进行图书查询、更改个人信息、向图书馆反馈信息等。该部分主要提供以下功能:

  1. 登陆验证。(防止读者信息被盗用。)
  2. 图书查询。(一个综合的图书查询系统,可以方便的使读者查到需要的书籍。)
  3. 读者个人信息查询以及管理。(可以适当的更改一些读者个人的资料,如email等,此外在这里还可以查到读者当前的、所有的借阅记录等。)
  4. 信息服务。(定期公布超期的读者列表,以及新到的图书等信息。)

5.1存储过程

--备份数据的存储过程

--将数据库备份到服务器C:\下,文件名为 当前日期+.zjx

ALTER PROCEDURE BACKUPmyData

AS

DECLARE @path varchar(15)

set @path=convert(varchar,getdate(),112)

set @path='C:\'+@path+'.zjx'

BACKUP DATABASE lib2004

TO Disk = @path

WITH FORMAT,

NAME = 'Full Backup of lib2004'

RETURN

/*检索某图书是哪位读者借去的*/

ALTER PROCEDURE Book1IsBorrowByWho

@Book_code nvarchar(50)

AS

SELECT Au_id

FROM borrow

WHERE (book_code = @Book_code) AND (Return_date IS NULL)

RETURN

/*检索某图书是否在馆*/

/*检索在馆的图书 只要图书id不在 借阅记录没有归还的记录 里 就表示在馆*/

/*不在馆 则返回0

在馆 返回1 */

ALTER PROCEDURE Book1IsInLib

@Book_code nvarchar(50)

AS

SELECT COUNT(*) as IsInLib

FROM book

WHERE Book_code = @Book_code AND Book_code IN

(SELECT book_code

FROM Book

WHERE Book_code NOT IN

(SELECT borrow.Book_code

FROM borrow

WHERE Return_date IS NULL))

RETURN

/* 用于获取一位读者的

当前借阅书数,

总共借阅书数,

可借书数

最大借阅时间

输入参数Au_id */

ALTER PROCEDURE Get1AuInfo

@Au_id nvarchar(50), /*1*/

@BorrowNo int output,

@BorrowNoCurrent int output,

@MaxBorrowDays int output,

@MaxBorrowBooks int output

AS

begin transaction

SELECT @BorrowNo=COUNT(*)

FROM borrow

WHERE (Au_id = @Au_id)

SELECT @BorrowNoCurrent=COUNT(*)

FROM borrow

WHERE (Au_id = @Au_id) AND (Return_date IS NULL)

SELECT @MaxBorrowDays=ausort.Au_borrowdays ,

@MaxBorrowBooks=ausort.Au_borrowbooks

FROM ausort INNER JOIN

au ON ausort.Au_sort = au.Au_sort

WHERE (au.Au_id = @Au_id)

commit transaction

RETURN

/* 用于获取一位读者所有超期的借书列表 Au_id */

/*author:翟靖轩 */

ALTER PROCEDURE Select1AuMaxDateBookList

@Au_id nvarchar(50) /*1*/

AS

SELECT borrow.book_code AS 图书条码号, book.Book_name AS 图书题名,

borrow.Borrow_date AS 借阅日期, borrow.Should_date AS 应还日期

FROM book INNER JOIN

borrow ON book.Book_code = borrow.book_code

WHERE (borrow.Au_id = @Au_id) AND (borrow.Return_date IS NULL) AND

(borrow.Should_date < GETDATE())

ORDER BY borrow.Should_date DESC

RETURN

/*返回超期的所有读者*/

/*author:翟靖轩 2004-5-10*/

ALTER PROCEDURE SelectMaxDateAuList

AS

SELECT borrow.Au_id AS 借书证号, au.Au_name AS 读者姓名,

borrow.book_code AS 图书条码号, book.Book_name AS 图书名称,

borrow.Borrow_date AS 借书日期, borrow.Should_date AS 应归还日期

FROM borrow INNER JOIN

au ON borrow.Au_id = au.Au_id INNER JOIN

book ON borrow.book_code = book.Book_code

WHERE (borrow.Return_date IS NULL) AND (GETDATE() > borrow.Should_date)

ORDER BY borrow.Au_id

RETURN

/*查询一个读者的所有借阅记录 包括已经借过的已经归还的书籍

作者:翟靖轩

日期:2004-5-2 */

ALTER PROCEDURE SelectAuAllBorrowList

@Au_id nvarchar(50)

AS

SELECT book.Book_code AS 条码号, book.Book_name AS 图书题名,

borrow.Borrow_date AS 借阅日期, borrow.Return_date AS 归还日期,

borrow.Should_date AS 应归还日期, book.Book_isbn AS ISBN号,

book.Book_pub AS 出版社, book.Book_sort AS 图书分类,

book.Book_author AS 图书作者

FROM book LEFT OUTER JOIN

borrow ON book.Book_code = borrow.book_code

WHERE (borrow.Au_id = @Au_id)

ORDER BY borrow.Return_date, borrow.Borrow_date DESC

RETURN

/* 综合图书查询 */

-- 查询所有在馆图书

ALTER PROCEDURE searchBookInLib

@Book_code nvarchar(50)='',

@Book_name nvarchar(50)='',

@Book_pub nvarchar(50)='',

@Book_isbn nvarchar(50)='',

@Book_pubdate smalldatetime='1900-01-01',

@Book_author nvarchar(50)='',

@Book_sort nvarchar(50)=''

AS

SELECT Book_code AS 条形码, Book_name AS 图书名称, Book_author AS 图书作者,

Book_pub AS 出版社, Book_isbn AS ISBN号, Book_pubdate AS 出版日期,

Book_page AS 图书页数, Book_price AS 图书价格, Book_adddate AS 入馆日期,

Book_place AS 存放位置, Book_sort AS 图书分类

FROM book

WHERE (Book_code LIKE '%' + @Book_code + '%') AND

(Book_name LIKE '%' + @Book_name + '%') AND

(Book_pub LIKE '%' + @Book_pub + '%') AND

(Book_isbn LIKE '%' + @Book_isbn + '%') AND

(Book_author LIKE '%' + @Book_author + '%') AND

(Book_sort LIKE '%' + @Book_sort + '%') AND

(Book_pubdate > @Book_pubdate) and

Book_code not IN

(SELECT borrow.Book_code

FROM borrow

WHERE Return_date IS NULL)

RETURN

5.2 winForms代码选录

' 一个用于执行存储过程的类

Imports System.Data

Imports System.Data.SqlClient

Public Class CdataService

Protected Connection As SqlConnection

Private m_DSN As String

'构建一个带有参数的sqlcommand

Private Overloads Function CreateCommand(ByVal sprocName As String, ByVal parameters() As IDataParameter) As SqlCommand

Dim command As SqlCommand = New SqlCommand(sprocName, Connection)

command.CommandType = CommandType.StoredProcedure

Dim para As SqlParameter

For Each para In parameters

command.Parameters.Add(para)

Next

command.Parameters.Add(New SqlParameter("Return Value", _

SqlDbType.Int, _

4, _

System.Data.ParameterDirection.ReturnValue, _

False, _

0, _

0, _

String.Empty, _

DataRowVersion.Default, _

Nothing))

Return command

End Function

'构建一个没有参数的sqlcommand

Private Overloads Function CreateCommand(ByVal sprocName As String) As SqlCommand

Dim command As SqlCommand = New SqlCommand(sprocName, Connection)

command.CommandType = CommandType.StoredProcedure

command.Parameters.Add(New SqlParameter("Return Value", _

SqlDbType.Int, _

4, _

System.Data.ParameterDirection.ReturnValue, _

False, _

0, _

0, _

String.Empty, _

DataRowVersion.Default, _

Nothing))

Return command

End Function

Public ReadOnly Property DSN() As String

Get

Return m_DSN

End Get

End Property

Public Overloads Function RunSP(ByVal sprocName As String) As Int32

Dim result As Int32

Connection.Open()

Dim command As SqlCommand = Me.CreateCommand(sprocName)

command.ExecuteNonQuery()

result = CType(command.Parameters("Return Value").Value, Int32)

Me.Connection.Close()

Return result

End Function

Public Overloads Function RunSP(ByVal sprocName As String, ByVal parameters() As IDataParameter) As Int32

Dim result As Int32

Connection.Open()

Dim command As SqlCommand = Me.CreateCommand(sprocName, parameters)

command.ExecuteNonQuery()

result = CType(command.Parameters("Return Value").Value, Int32)

Me.Connection.Close()

Return result

End Function

Public Overloads Function RunSP(ByVal sprocName As String, _

ByVal parameters() As IDataParameter, ByVal DataSet As DataSet) As Int32

Dim result As Int32

Dim sqlDA As New SqlDataAdapter

Connection.Open()

sqlDA.SelectCommand = Me.CreateCommand(sprocName, parameters)

sqlDA.Fill(DataSet, "SourceTable")

result = CType(sqlDA.SelectCommand.Parameters("Return Value").Value, Int32)

Connection.Close()

Return result

End Function

Public Overloads Function RunSP(ByVal sprocName As String, _

ByRef DataSet1 As DataSet) As Int32

Dim result As Int32

Dim sqlDA As New SqlDataAdapter

Connection.Open()

sqlDA.SelectCommand = Me.CreateCommand(sprocName)

sqlDA.Fill(DataSet1)

result = CType(sqlDA.SelectCommand.Parameters("Return Value").Value, Int32)

Connection.Close()

Return result

End Function

Public Overloads Function RunSP(ByVal sprocName As String, _

ByVal parameters() As IDataParameter, ByRef DataSet As DataSet, ByVal TableName As String) As Int32

Dim result As Int32

Dim sqlDA As New SqlDataAdapter

Connection.Open()

sqlDA.SelectCommand = Me.CreateCommand(sprocName, parameters)

sqlDA.Fill(DataSet, TableName)

result = CType(sqlDA.SelectCommand.Parameters("Return Value").Value, Int32)

Connection.Close()

Return result

End Function

Public Function Construct(ByVal ConstructString As String)

m_DSN = ConstructString

End Function

Public Function Activate()

Connection = New SqlConnection(m_DSN)

End Function

Public Function Deactivate()

Connection = Nothing

End Function

Public Sub New()

End Sub

Public Sub New(ByVal ConstrucString As String)

Construct(ConstrucString)

Me.Activate()

End Sub

Protected Overrides Sub Finalize()

MyBase.Finalize()

Me.Deactivate()

End Sub

End Class

图书查询窗体的全部代码frmBookQuery.vb

Imports System.Data.SqlClient

Imports System.Drawing.Printing

Public Class frmBookQuery

Inherits library.frmBase

#Region " Windows 窗体设计器生成的代码 "

'此处略去...

#End Region

Private Sub frmBookQuery_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

With Me.dbgBookList

.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _

Or System.Windows.Forms.AnchorStyles.Left) _

Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

.BackColor = System.Drawing.Color.Snow

.BackgroundColor = System.Drawing.SystemColors.ActiveCaptionText

.CaptionVisible = False

.HeaderForeColor = System.Drawing.SystemColors.ControlText

.ReadOnly = True

End With

BindComboBox1()

Me.cboBook_sort.Text = ""

End Sub

Function search()

Dim cn As New SqlClient.SqlConnection(cnstr)

Dim cmd As New SqlCommand

Dim da As SqlDataAdapter

Dim ds As New DataSet

With cmd

If Me.radAllBook.Checked = True Then

.CommandText = "searchBook"

Else

.CommandText = "searchBookInlib"

End If

.CommandType = CommandType.StoredProcedure

.Connection = cn

End With

Dim mBook_code As New SqlParameter("@Book_code", SqlDbType.NVarChar, 50) '1

Dim mBook_name As New SqlParameter("@Book_name", SqlDbType.NVarChar, 50) '2

Dim mBook_pub As New SqlParameter("@Book_pub", SqlDbType.NVarChar, 50) '3

Dim mBook_isbn As New SqlParameter("@Book_isbn", SqlDbType.NVarChar, 50) '4

Dim mBook_pubdate As New SqlParameter("@Book_pubdate", SqlDbType.SmallDateTime, 4)

Dim mBook_author As New SqlParameter("@Book_author", SqlDbType.NVarChar, 50) '6

Dim mBook_sort As New SqlParameter("@Book_sort", SqlDbType.NVarChar, 50) '11

With cmd.Parameters

.Add(mBook_code)

.Add(mBook_name)

.Add(mBook_pub)

.Add(mBook_isbn)

.Add(mBook_pubdate)

.Add(mBook_author)

.Add(mBook_sort)

End With

'赋值

mBook_code.Value = Me.txtBook_code.Text.Trim '1

mBook_name.Value = Me.txtBook_name.Text.Trim '2

mBook_pub.Value = Me.txtBook_pub.Text.Trim '3

mBook_isbn.Value = Me.txtBook_isbn.Text.Trim '4

mBook_pubdate.Value = Me.dtpBook_pubdate.Value '5

mBook_author.Value = Me.txtBook_author.Text.Trim '6

mBook_sort.Value = Me.cboBook_sort.Text.Trim '11

da = New SqlDataAdapter(cmd)

Try

da.Fill(ds)

ds.Tables(0).Columns(0).Caption = "图书条码号"

Me.dbgBookList.DataSource = ds.Tables(0)

Me.Label8.Text = "共检索到" + ds.Tables(0).Rows.Count.ToString + "条记录"

Catch ex As Exception

MessageBox.Show(ex.Message)

Finally

cn.Close()

If Not cn Is Nothing Then

cn.Dispose()

End If

End Try

End Function

Function BindComboBox1()

Dim cnLib2004 As SqlConnection

Dim cmdbooksort As SqlCommand

Dim drBooksort As SqlDataReader

cnLib2004 = New SqlConnection(cnstr)

cmdbooksort = New SqlCommand

With cmdbooksort

.CommandType = CommandType.StoredProcedure

.Connection = cnLib2004

.CommandText = "selectBookSort"

End With

Try

cnLib2004.Open()

drBooksort = cmdbooksort.ExecuteReader

Dim myarr As New ArrayList

While drBooksort.Read

myarr.Add(drBooksort.Item(0))

End While

Me.cboBook_sort.DataSource = myarr

Catch ex As Exception

MessageBox.Show(ex.Message)

Me.Close()

Finally

cnLib2004.Close()

End Try

End Function

Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick

If e.Button Is Me.tbtnQuery Then

search()

ElseIf e.Button Is Me.tbtnExit Then

Me.Close()

ElseIf e.Button Is Me.tbtnReset Then

frmClear()

ElseIf e.Button Is Me.tbtnExcel Then

excel()

ElseIf e.Button Is Me.tbtnPrint Then

print()

End If

End Sub

Private Sub frmClear()

Dim p1 As Control

Dim u As New Label

For Each p1 In Me.Panel2.Controls

If Not p1.GetType Is u.GetType Then

p1.Text = ""

End If

Next

Me.cboBook_sort.Text = ""

Me.radAllBook.Checked = True

Me.dtpBook_pubdate.Value = "1990-1-1"

Me.txtBook_code.Focus()

Me.dbgBookList.DataSource = Nothing

End Sub

Sub excel()

Dim tableAu As DataTable

tableAu = CType(Me.dbg.DataSource, DataTable)

If tableAu Is Nothing Then

MessageBox.Show("没有任何记录可以导出!", "error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Exit Sub

End If

Dim myfrm As New frmShowProgress

myfrm.Show("正在建立excel对象...")

Try

Dim exl As New Microsoft.Office.Interop.Excel.ApplicationClass

Dim workbook As Microsoft.Office.Interop.Excel.Workbook

Dim sheet As Microsoft.Office.Interop.Excel.Worksheet

workbook = CType(exl.Workbooks.Add(), Microsoft.Office.Interop.Excel.Workbook)

sheet = CType(workbook.Sheets(1), Microsoft.Office.Interop.Excel.Worksheet)

Dim mycount, mycolumn As Int16

With tableAu

myfrm.setMsg("正在导出数据,请等待......")

For mycount = 0 To .Rows.Count - 1

For mycolumn = 0 To .Columns.Count - 1

With sheet

.Cells(mycount + 2, mycolumn + 1) = tableAu.Rows(mycount).Item(mycolumn)

End With

Next

'MsgBox(CType(mycount / .Rows.Count * 100, Int16))

myfrm.setProgress(CType(mycount / .Rows.Count * 100, Int16))

Next

myfrm.setMsg("正在设定excel表头格式...")

For mycolumn = 0 To .Columns.Count - 1

exl.Workbooks(1).Worksheets(1).cells(1, mycolumn + 1) = .Columns(mycolumn).ColumnName

exl.Workbooks(1).Worksheets(1).cells(1, mycolumn + 1).Font.Bold = True

Next

End With

myfrm.setProgress(100)

myfrm.Close()

'workbook.SaveAs(myfile)

sheet.Application.Visible = True

'exl.Quit()

Catch ex As Exception

MessageBox.Show("导出失败!", "fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

myfrm.Close()

End Try

End Sub

Private Sub print()

Dim tableAu As DataTable

tableAu = CType(Me.dbgBookList.DataSource, DataTable)

If tableAu Is Nothing Then

MessageBox.Show("没有任何记录可以导出!", "error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Exit Sub

End If

Dim myfrm2 As New frmStatus

myfrm2.Show("正在导出报表...")

Dim myfrm As New frmShowReport

Dim rtd As New crtBook

rtd.SetDataSource(tableAu)

myfrm.Text = "报表输出窗口..."

myfrm.rpt.ReportSource = rtd

myfrm.rpt.DisplayGroupTree = False

myfrm2.Close()

myfrm.ShowDialog()

End Sub

End Class

登陆窗体代码frmLogin.vb

Public Class frmLogin

Inherits System.Windows.Forms.Form

Public IsLogSuccess As Boolean

Public strLogUser As String

#Region " Windows 窗体设计器生成的代码 "

此处略......

#End Region

Private Sub frmLogin_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

IsLogSuccess = False

End Sub

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click

IsLogSuccess = validateLogin(Me.txtUser.Text.Trim, Me.txtPwd.Text.Trim)

If IsLogSuccess = True Then

strLogUser = Me.txtUser.Text.Trim

Me.Close()

Else

MessageBox.Show("密码错误!", "请重新登陆!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End If

End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click

Me.Close()

End Sub

Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

Dim grbrush As Drawing2D.LinearGradientBrush

grbrush = New Drawing2D.LinearGradientBrush(New Point(0, 0), _

New Point(sender.Width, sender.Height), Color.DarkSlateGray, Color.White)

sender.CreateGraphics.FillRectangle(grbrush, New Rectangle(0, 0, sender.Width, sender.Height))

End Sub

End Class

将数据服务器信息序列化为xml文件的类

Imports System.Xml.Serialization

Imports System.IO

Imports System.Collections

Public Class CsetCnInfo

Structure CnInfo

Public server As String

Public database As String

Public uid As String

Public password As String

End Structure

Private mCC(4) As String

Public Function setCnTofile()

Dim mcn As CnInfo

mcn.server = mCC(0)

mcn.database = mCC(1)

mcn.uid = mCC(2)

mcn.password = mCC(3)

Dim xmlS As New XmlSerializer(GetType(CnInfo))

Dim txtwt As TextWriter = New StreamWriter("cninfo.xml")

xmlS.Serialize(txtwt, mCn)

txtwt.Close()

End Function

Public Function GetCnFromfile() As String

Dim mcn As CnInfo

Dim xmls As New XmlSerializer(GetType(CnInfo))

Dim txtwt As TextReader = New StreamReader("cninfo.xml")

Try

mcn = xmls.Deserialize(txtwt)

mCC(0) = mcn.server

mCC(1) = mcn.database

mCC(2) = mcn.uid

mCC(3) = mcn.password

Catch ex As Exception

Throw ex

Finally

txtwt.Close()

End Try

Return returnCnstr()

End Function

Public Function returnCnstr() As String

Return "server=" + mCC(0) + ";database=" _

  • mCC(1) + ";uid=" + mCC(2) + ";pwd=" + mCC(3)

End Function

Public Property cnstr() As String()

Get

Return mCC

End Get

Set(ByVal Value As String())

Value.CopyTo(mCC, 0)

End Set

End Property

Public Sub New()

End Sub

End Class

验证登陆的函数

Public Function validateLogin(ByVal uid As String, ByVal pwd As String) As Boolean

Dim IsCorrect As Boolean = False

Dim cnmy As New SqlConnection(cnstr)

Dim cmd As New SqlCommand

With cmd

.Connection = cnmy

.CommandType = CommandType.Text

.CommandText = "select count(*) from manager where Man_id=@Man_id and Man_pwd=@Man_pwd"

End With

Dim mMan_id As New SqlParameter("@Man_id", SqlDbType.NVarChar, 50)

Dim mMan_pwd As New SqlParameter("@Man_pwd", SqlDbType.NVarChar, 12)

With cmd.Parameters

.Add(mMan_id)

.Add(mMan_pwd)

End With

mMan_id.Value = uid

mMan_pwd.Value = pwd

Try

cnmy.Open()

If cmd.ExecuteScalar = 1 Then

IsCorrect = True

End If

Catch ex As Exception

MessageBox.Show("登陆验证时数据库发生错误" + vbCrLf + ex.Message, _

"error", MessageBoxButtons.OK, MessageBoxIcon.Stop)

Return False

Finally

cnmy.Close()

If Not cnmy Is Nothing Then

cnmy.Dispose()

End If

End Try

Return IsCorrect

End Function

5.3 ASP.NET WebForms代码选录

显示读者基本信息Userinfo.aspx的页面后置代码(CodeBehind)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'在此处放置初始化页的用户代码

If Session("UID") Is Nothing Then

Page.Response.Redirect("login.aspx")

End If

If Not IsPostBack Then

If Not Session("UID") Is Nothing Then

AuTextBind(Session("UID"))

setBorrowState(Session("UID"))

Else

Page.Response.Redirect("login.aspx")

End If

End If

End Sub

'显示某读者基本情况

Function AuTextBind(ByVal strAu_id As String)

Dim cnlib2004 As SqlConnection

Dim cmdAuBorrowList As SqlCommand

Dim drAuBorrowList As SqlDataReader

cnlib2004 = New SqlConnection(ConfigurationSettings.AppSettings("cncstr"))

cmdAuBorrowList = New SqlCommand

With cmdAuBorrowList

.CommandType = CommandType.StoredProcedure

.CommandText = "Select1Au"

.Connection = cnlib2004

End With

Dim mAu_id As New SqlParameter("@Au_id", SqlDbType.NVarChar, 50) '1

cmdAuBorrowList.Parameters.Add(mAu_id)

mAu_id.Value = strAu_id

Try

cnlib2004.Open()

drAuBorrowList = cmdAuBorrowList.ExecuteReader(CommandBehavior.SingleRow)

With drAuBorrowList

If .Read() Then

Me.spAuadddate.InnerHtml = CType(.Item("Au_adddate"), String)

Me.spAuadr.InnerHtml = .Item("Au_adr")

Me.spAuname.InnerHtml = .Item("Au_name")

Me.spAusex.InnerHtml = .Item("Au_sex")

Me.spAusort.InnerHtml = .Item("Au_sort")

Me.spAuid.InnerHtml = strAu_id

Me.spAuemail.InnerHtml = .Item("Au_email")

Me.spAuremarks.InnerHtml = .Item("Au_remarks")

Else

End If

End With

Catch ex As Exception

Response.Write(ex.Message)

Finally

cnlib2004.Close()

End Try

End Function

'显示读者借书状态 最大借书册书,当前借书册数 等

Function setBorrowState(ByVal strAu_id As String)

Dim cnlib2004 As SqlConnection

Dim cmd As SqlCommand

Dim dr As SqlDataReader

Dim CurBorrowNo As Int16

Dim AllborrowNo As Int16

Dim BorrowDays As Int16

Dim BorrowBooks As Int16

cnlib2004 = New SqlConnection(ConfigurationSettings.AppSettings("cncstr"))

cmd = New SqlCommand

With cmd

.CommandType = CommandType.StoredProcedure

.CommandText = "SelectAuCurrentBorrowNo"

.Connection = cnlib2004

End With

Dim mAu_id As New SqlParameter("@Au_id", SqlDbType.NVarChar, 50) '1

cmd.Parameters.Add(mAu_id)

mAu_id.Value = strAu_id

Try

cnlib2004.Open()

CurBorrowNo = CType(cmd.ExecuteScalar, Int16)

cmd.CommandText = "SelectAuAllBorrowNo"

AllborrowNo = CType(cmd.ExecuteScalar, Int16)

cmd.CommandText = "SelectAuSortInfo"

dr = cmd.ExecuteReader(CommandBehavior.SingleRow)

While dr.Read()

BorrowDays = dr.Item("Au_borrowdays")

BorrowBooks = dr.Item("Au_borrowbooks")

End While

Me.spTotalBorrowNo.InnerHtml = "共借书" + AllborrowNo.ToString + "册"

Me.spMaxBorrowDays.InnerHtml = BorrowDays.ToString + "天"

Me.spBorrowQinkuang.InnerHtml = "[" + CurBorrowNo.ToString + "/"

Me.spBorrowQinkuang.InnerHtml += BorrowBooks.ToString + "]"

Catch ex As Exception

Response.Redirect("error.aspx?errmsg=" + ex.Message)

Finally

cnlib2004.Close()

End Try

End Function

相关推荐
2401_854391088 分钟前
Spring Boot大学生就业招聘系统的开发与部署
java·spring boot·后端
静听山水10 分钟前
mysql语句执行过程
数据库·mysql
虽千万人 吾往矣29 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
mariokkm1 小时前
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
数据库·django·sqlite
这孩子叫逆1 小时前
Spring Boot项目的创建与使用
java·spring boot·后端
Wang's Blog2 小时前
Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息
数据库·redis
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO2 小时前
MySQL事务
数据库·mysql
coderWangbuer2 小时前
基于springboot的高校招生系统(含源码+sql+视频导入教程+文档+PPT)
spring boot·后端·sql
攸攸太上2 小时前
JMeter学习
java·后端·学习·jmeter·微服务
Kenny.志2 小时前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端