メニュー
ASP.Netのお勉強
VB.Netのお勉強
Excel マクロ・VBAのお勉強
PHPのお勉強
AJAXのお勉強
Webデザインのお勉強
Javaのお勉強
連想書籍検索
世界の観光地検索
路線図
総合サイトCocoaLiz
|
11.その他の処理(vb側)@ASP.Netで掲示板を作成しよう
vb側にもその他の処理を追加します。
変更点
・入力文字チェックを追加
inputCheckを作成します。
validatorではなく、自分で作成して呼び出します。
投稿ボタンクリック時に、inputCheckを呼び出します。
入力エラーの場合は、メッセージを画面表示します。
・投稿画面初期化処理を追加
initDispを作成します。
投稿内容をクリアする処理です。
投稿処理が完了したら、initDispを呼びます。
・例外処理
例外を追加します。
catchにて、エラー内容をメッセージに表示します。
・HtmlEncode処理を追加
テーブルに書き込む前に、投稿データに対してHtmlEncodeを施します。
<→&lt;の様に変更します。
●vb
Imports System.Data.SqlClient
Imports System.Data
Imports System.Web.HttpUtility
Partial Class SampleBBS_bbs
Inherits System.Web.UI.Page
'投稿ボタンクリック処理
Protected Sub tkuBtn_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles tkuBtn.Click
Dim dbcon As SqlConnection
Dim dbcmd As SqlCommand
Dim dbResult As Integer
Dim sqlStr As String
Dim sqlUrl As String
Dim errMsg As String
'入力文字チェック
errMsg = Me.inputCheck()
If errMsg <> "" Then
Me.msgLbl.Text = errMsg
Exit Sub
End If
'投稿内容をDBに格納
Try
'接続文字列
sqlUrl = "data source=(local)\SQLEXPRESS;initial
catalog=DB;user id=id;password=pass;persist security info=True;packet
size=4096"
'DBコネクション作成
dbcon = New SqlConnection(sqlUrl)
'DB接続
dbcon.Open()
'SQL文
sqlStr = "INSERT INTO BBS(NAME,TITLE,COMMENT,CREATEDATE)
VALUES(@NAME,@TITLE,@COMMENT,@CREATEDATE)"
'SQLコマンド作成
dbcmd = New SqlCommand(sqlStr, dbcon)
'パレメータセット
Dim p1 As SqlParameter = New SqlParameter("@NAME",
HtmlEncode(Me.nameTxt.Text))
dbcmd.Parameters.Add(p1)
Dim p2 As SqlParameter = New SqlParameter("@TITLE",
HtmlEncode(Me.titleTxt.Text))
dbcmd.Parameters.Add(p2)
Dim p3 As SqlParameter = New SqlParameter("@COMMENT",
HtmlEncode(Me.commentTxt.Text))
dbcmd.Parameters.Add(p3)
Dim p4 As SqlParameter = New SqlParameter("@CREATEDATE",
System.DateTime.Now)
dbcmd.Parameters.Add(p4)
'SQL文実行
dbResult = dbcmd.ExecuteNonQuery()
'クローズ処理
dbcmd.Dispose()
dbcon.Close()
dbcon.Dispose()
'投稿内容表示
Me.bbsdisp()
'投稿メッセージ表示
Me.msgLbl.Text = "投稿しました。"
'投稿項目初期化
Me.initDisp()
Catch ex As Exception
Me.msgLbl.Text = ex.Message
Exit Sub
Finally
dbcmd = Nothing
dbcon = Nothing
End Try
End Sub
'ページロード時の処理
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'投稿内容表示
Try
bbsdisp()
Catch ex As Exception
Me.msgLbl.Text = ex.Message
End Try
End If
End Sub
Protected Sub initDisp()
Me.nameTxt.Text = ""
Me.titleTxt.Text = ""
Me.commentTxt.Text = ""
End Sub
Protected Sub bbsdisp()
Dim dbcon As SqlConnection
Dim dbcmd As SqlCommand
Dim dataRead As SqlDataReader
Dim sqlStr As String
Dim sqlUrl As String
Try
'接続文字列
sqlUrl = "data source=(local)\SQLEXPRESS;initial
catalog=DB;user id=id;password=pass;persist security info=True;packet
size=4096"
'DBコネクション作成
dbcon = New SqlConnection(sqlUrl)
'DB接続
dbcon.Open()
'SQL文(NOの降順で取得)
sqlStr = "SELECT * FROM BBS ORDER BY NO DESC"
'SQLコマンド作成
dbcmd = New SqlCommand(sqlStr, dbcon)
'SQL文実行
dataRead = dbcmd.ExecuteReader()
Dim dt As DataTable
Dim dr As DataRow
dt = New DataTable()
dt.Columns.Add(New DataColumn("noItem", GetType(String)))
dt.Columns.Add(New DataColumn("nameItem", GetType(String)))
dt.Columns.Add(New DataColumn("titleItem", GetType(String)))
dt.Columns.Add(New DataColumn("commentItem", GetType(String)))
dt.Columns.Add(New DataColumn("createDateItem",
GetType(String)))
'結果を読み込み
Dim bbsStr As String = ""
While (dataRead.Read())
dr = dt.NewRow()
dr(0) = CStr(dataRead("NO"))
dr(1) = dataRead("NAME")
dr(2) = dataRead("TITLE")
dr(3) = dataRead("COMMENT")
dr(4) = dataRead("CREATEDATE")
dt.Rows.Add(dr)
End While
Me.repeater1.DataSource = dt.DefaultView
Me.repeater1.DataBind()
'DBクローズ処理
dataRead.Close()
dbcmd.Dispose()
dbcon.Close()
dbcon.Dispose()
Catch ex As Exception
Throw ex
Finally
dataRead = Nothing
dbcmd = Nothing
dbcon = Nothing
End Try
End Sub
Protected Function inputCheck() As String
Dim errMsg As String = ""
'必須チェック(コメント欄)
If Len(Trim(Me.commentTxt.Text)) = 0 Then
errMsg = "コメント欄は必須です。"
Me.commentTxt.Focus()
Return errMsg
End If
'文字長チェック(名前)
If Len(Me.nameTxt.Text) > 50 Then
errMsg = "名前は、50文字以内です。"
Me.nameTxt.Focus()
Return errMsg
End If
'文字長チェック(タイトル)
If Len(Me.titleTxt.Text) > 50 Then
errMsg = "タイトルは、50文字以内です。"
Me.titleTxt.Focus()
Return errMsg
End If
'文字長チェック(コメント)
If Len(Me.commentTxt.Text) > 200 Then
errMsg = "コメントは、200文字以内です。"
Me.commentTxt.Focus()
Return errMsg
End If
Return errMsg
End Function
End Class
|
|
|