メニュー

1.どのような掲示板を作成するか

2.投稿フォームの作成
3.投稿内容をファイルに書き込む
4.投稿内容を表示

5.DBにテーブルを作成
6.DBに投稿内容を書き込む
7.DBの内容を表示
8.Repeaterコントロールの配置
9.Repeaterで投稿内容を表示

10.その他の処理(aspx側)
11.その他の処理(vb側)

12.足りない処理

13.削除ボタンの追加

トップ

xml

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




Copyright (C) 2008 ASP.Netで掲示板を作成しよう. All Rights Reserved.