程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在SQL Server中存儲圖像時強化管理界面

在SQL Server中存儲圖像時強化管理界面

編輯:關於SqlServer

在這篇文章中,我會告訴你如何強化管理界面,並提供給你一個更好使用圖像的方法。



圖像維護

把圖像插入數據表中只是管理數據庫的一個方面。另外,用戶需要刪除或編輯數據,甚至尋找圖像的位置。所以,我們通過ASP.Net來建立一個管理界面,允許用戶編輯圖像數據,刪除圖像,添加新的圖像,以及通過用戶輸入的字符串來查找圖像。在這個界面裡,我們會使用DataGrid控件來顯示每一條數據。 DataGrid的每一行都將包括以下內容:

· ID: 數據表中為每個圖像指定的唯一整數。

· Name: 插入圖像時,需要為圖像指定名稱。這一項通過上傳控件得到,所以它的內容是圖像的文件名,以及插入時的完整路徑。

· Type: 圖像所對應的圖像類型。

· Size: 圖像的大小,單位是字節。

· Description: 由用戶輸入的圖像說明。

· Image: 實際圖像將以一個比較小的比例顯示在DataGrid中(比例由圖像本身決定)。也可以把它看作縮略圖(寬50像素,高40像素)。

· Buttons: 每一條數據中都有編輯和刪除的按鈕。當用戶點擊編輯按鈕時,更新和取消按鈕將顯示在編輯按鈕的位置。更新按鈕將所作修改寫入數據庫並退出編輯模式。取消按鈕忽略一切修改,直接退出編輯模式。

另外,DataGrid頂端的添加新圖像按鈕可以讓用戶向數據庫中添加新的圖像。還有一個文本框和搜索按鈕讓用戶可以在數據庫中進行搜索。當用戶點擊搜索按鈕時,將在數據庫中搜索名稱或說明中包含搜索字符串的數據條目。搜索結果將顯示在DataGrid中。還有一個清除按鈕,用於清除搜索文本框,並將所有數據重新載入DataGrid。

列表A列出了頁面的VB.Net代碼。

列表A

========

Const connString as String = "Data Source=localhost;Initial

Catalog=Northwind;User Id=username;Password=passWord;"

Sub Page_Load(sender As Object, e As EventArgs)

If (Not Page.IsPostBack) ThenBindDataSet(String.Empty)

End If

End Sub

Sub BindDataSet(searchString As String)

Dim conn As SqlConnection

Dim comm As SqlCommand

Dim sql As String

If (searchString = String.Empty) Thensql = "SELECT ID, Name,

ContentType, FileSize, Picture, Description " + _

"FROM ImageData ORDER BY Name"

Elsesql = "SELECT ID, Name, ContentType, FileSize, Picture, Description

" + _

"FROM ImageData WHERE Name Like '%" + searchString + _

"%' OR Description Like '%" + searchString + "%' ORDER BY Name"

End If

Tryconn = New SqlConnection(connString)comm = New SqlCommand(sql,

conn)conn.Open()dgImages.DataSource =

comm.ExecuteReader()dgImages.DataBind()

Catch SQLexc As SqlExceptionResponse.Write("Data error occurred: "

amp; SQLexc.ToString())

End Try

End Sub

Function ImageLink(strArgument) as String

Return ("displayImageVB.ASPx?id=" & strArgument)

End Function

Sub dgImages_Edit(sender As Object, e As

DataGridCommandEventArgs)dgImages.EditItemIndex =

e.Item.ItemIndexBindDataSet(

String.Empty)

End Sub

Sub dgImages_Cancel(sender As Object, e As

DataGridCommandEventArgs)dgImages.EditItemIndex =

-1BindDataSet(String.Empty)

End Sub

Sub dgImages_Update(sender As Object, e As DataGridCommandEventArgs)

Dim strName as String = CType(e.Item.Cells(1).Controls(0),

TextBox).Text

Dim strDesc as String = CType(e.Item.Cells(4).Controls(0),

TextBox).Text

Dim strSQL as String = "UPDATE [ImageData] SET [Name] = '" + strName +

_

"', [Description] = '" + strDesc + "' WHERE [ID] = " +

e.Item.Cells(0).Text

Dim conn as New SqlConnection(connString)conn.Open()

Dim comm as SqlCommand = new SqlCommand(strSQL, conn)comm.CommandType =

CommandType.Textcomm.ExecuteNonQuery()conn.Close()dgImages.EditItemIndex

= -1BindDataSet(String.Empty)

End Sub

Sub dgImages_Delete(sender As Object, e As DataGridCommandEventArgs)

Dim sql as String sql = "DELETE FROM [ImageData] WHERE [ID] = " +

e.Item.Cells(0).Text

Dim conn as New SqlConnection(connString)conn.Open()

Dim comm as SqlCommand = new SqlCommand(sql, conn)comm.CommandType =

CommandType.Textcomm.ExecuteNonQuery()conn.Close()dgImages.EditItemIndex

= -1BindDataSet(String.Empty)

End Sub

Sub AddImage(sender As Object, e As

EventArgs)Response.Redirect("addImage.ASPx")

End Sub

Sub DOSearch(sender As Object, e As

EventArgs)BindDataSet(txtSearch.Text)

End Sub

Sub ClearSearch(sender As Object, e As EventArgs)

If Not (txtSearch.Text = "")

ThenBindDataSet(String.Empty)txtSearch.Text = ""

End If

End Sub

'
您正在看的SQLserver教程是:在SQL Server中存儲圖像時強化管理界面。>
Runat=server />



列表B 列出了等價的C#代碼。

列表B

===============

const string connString = "Data Source=Pentium4;Initial

Catalog=Northwind;User Id=sa;PassWord=;";

rivate void Page_Load(object sender, System.EventArgs e) {

if (!Page.IsPostBack) {BindDataSet(String.Empty);

} }

ublic void BindDataSet(string searchString)

{SqlConnectionconn;SqlCommandcomm;

tring sql;

if (searchString == String.Empty)sql = "SELECT ID, Name,

ContentType,

FileSize, Picture, Description FROM ImageData ORDER BY Name";

elsesql = "SELECT ID, Name, ContentType, FileSize, Picture, Description

FROM ImageData WHERE Name Like '%" + searchString + "%' OR Description

Like '%" + searchString + "%' ORDER BY Name";

try {conn = new SqlConnection(connString);comm = new SqlCommand(sql,

conn);conn.Open();dgImages.DataSource =

comm.ExecuteReader();dgImages.DataBind();

} catch (SqlException ex) {Response.Write("Data Error: " +

ex.ToString());

} }

ublic string ImageLink(object strArgument) {

return ("displayImageVB.ASPx?id=" + strArgument.ToString());

}

ublic void dgImages_Edit(Object sender, DataGridCommandEventArgs e)

{dgImages.EditItemIndex = e.Item.ItemIndex;BindDataSet(String.Empty);

}

ublic void dgImages_Cancel(Object sender, DataGridCommandEventArgs e)

{dgImages.EditItemIndex = -1;BindDataSet(String.Empty);

}

ublic void

dgImages_Update(Object sender, DataGridCommandEventArgs e)

{

tring strName;

tring strDesc;

tring strSQL;SqlConnectionconn;SqlCommandcomm;strName =

((TextBox)(e.Item.Cells[1].Controls[0])).Text;strDesc =

((TextBox)(e.Item.Cells[4].Controls[0])).Text;strSQL = "UPDATE

[ImageData] SET [Name] = '" + strName + "', [Description] = '" +

trDesc + "' WHERE [ID] = " + e.Item.Cells[0].Text;conn = new

SqlConnection(connString);conn.Open();comm = new SqlCommand(strSQL,

conn);comm.CommandType =

CommandType.Text;comm.ExecuteNonQuery();conn.Close();dgImages.EditItemIndex

= -1;BindDataSet(String.Empty);

}

ublic void dgImages_Delete(Object sender, DataGridCommandEventArgs e)

{

tring sql;sql = "DELETE FROM [ImageData] WHERE [ID] = " +

e.Item.Cells[0].Text;SqlConnectionconn;SqlCommandcomm;conn = new

SqlConnection(connString);conn.Open();comm = new SqlCommand(sql,

conn);comm.CommandType =

CommandType.Text;comm.ExecuteNonQuery();conn.Close();dgImages.EditItemIndex

= -1;BindDataSet(String.Empty);

}

ublic void AddImage(Object sender, EventArgs e)

{Response.Redirect("sqlimagesexample1vb.ASPx");

}



ublic void DOSearch(Object sender, EventArgs e)

{BindDataSet(txtSearch.Text);

}

ublic void ClearSearch(Object sender, EventArgs e) {

if (txtSearch.Text != "") {BindDataSet(String.Empty);txtSearch.Text =

"";

} }

'

Runat="server" />



以下是對代碼的一些解釋:

· DataGrid的OnEditCommand屬性將Edit命令 (EditCommandColumn)指定到特定的子程序。對取消編輯的OnCancelCommand,保存修改的OnUpdateCommand,以及刪除數據項的OnDeleteCommand也是一樣。

· ASP:BoundColumn元素在對應的數據集中將DataGrid的列與指定的列連接。DataFIEld屬性指定對應的列。

· ASP.Net的按鈕控件使搜索和添加新項目更加輕松。它們的OnClick屬性可以讓你指定一個子程序,當按鈕被按下時執行。

· DOSearch子程序在數據表中所有數據項的Description和Name中對搜索字符串進行搜索。搜索結果的各行將在DataGrid中顯示。

· ClearSearch方法將所有數據重新載入DataGrid,並清除搜索文本框。

· BindDataSet方法負責將數據載入DataGrid並接受搜索字符串。如果搜索字符串為空,則執行的T-SQL語句中將設定為顯示數據表中所有數據。否則,將使用搜索字符串來創建T-SQL語句來取出所有符合搜索字符串的記錄,顯示在DataGrid中。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved