HighTechTalks DotNet Forums  

VB DAL and Data Binding with Gridview Control

ASP.net Data Grid Control microsoft.public.dotnet.framework.aspnet.datagridcontrol


Discuss VB DAL and Data Binding with Gridview Control in the ASP.net Data Grid Control forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Brian Green
 
Posts: n/a

Default VB DAL and Data Binding with Gridview Control - 09-18-2007 , 04:42 PM






I'm sure this is a very simple and basic question for you guys so please be
kind if I miss the obvious. :-)

I am currently using a VB DAL that I downloaded from
http://www.a1vbcode.com/app-3822.asp and the only customization I have done
is change all the shared members to public because I want to make sure I
instantiate the object before I use it to avoid other processes from
accidently changing the data I expect back.

Everything works but I can't seem to figure out how to get it to work with a
GridView control so that I can edit the column headings using the "Edit
Columns..." link in the GridView Task flyout.

I took a screen capture of what I mean at:
http://www.intermedia4web.com/temp/001.png

Screen capture of the ObjectDataSource configuration:
http://www.intermedia4web.com/temp/002.png

Included below is the code for the 3 pages: test_data.aspx, Videos.vb and
DbHelper.vb
You can also download it from
http://www.intermedia4web.com/temp/dbhelper.zip


Thanks in advance for any advice I can get.

---------------------
test_data.aspx (code)
----------------------
<asp:GridView ID="GridView1" runat="server"
DataSourceID="ObjectDataSource1"></asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetVideoSeriesList"
TypeName="InterMedia.Videos"></asp:ObjectDataSource>


-------------------------
Videos.vb (code)
-------------------------
Option Explicit On
Option Strict On

Imports Microsoft.VisualBasic
Imports System.Data
Imports InterMedia.InterMediaLib

Namespace InterMedia
Public Class Videos

''' <summary>
''' Connection string to the default database
''' </summary>
Private _ConnectionString As String

''' <summary>
''' Sets the connection string
''' </summary>
Sub New()
_ConnectionString =
ConfigurationManager.ConnectionStrings("InterMedia ConnectionString").ConnectionString
End Sub

''' <summary>
''' Gets list of video series with their current titles.
''' </summary>
Public Function GetVideoSeriesList() As DataSet
Dim oDBHelper As New DbHelper
oDBHelper.ConnectionString = _ConnectionString

Return oDBHelper.ExecuteDataSet(CommandType.StoredProcedu re,
"usp_GetVideoSeriesList")
End Function

Public Function GetVideoSeriesListDT() As DataTable
Dim oDBHelper As New DbHelper
oDBHelper.ConnectionString = _ConnectionString

Return oDBHelper.ExecuteTable(CommandType.StoredProcedure ,
"usp_GetVideoSeriesList")
End Function

End Class
End Namespace


-------------------------
DbHelper.vb (code)
-------------------------

Option Explicit On
Option Strict On
Imports System
Imports System.Data
Imports System.Data.Common

Public Class DbHelper

' Downloaded from http://www.a1vbcode.com/app-3822.asp

Private _factory As Providers = Providers.SqlClient
Private _connectionString As String = String.Empty

''' <summary>
''' Get or Sets the Connection String
''' </summary>
''' <value></value>
''' <returns>String</returns>
''' <remarks></remarks>

Public Property ConnectionString() As String

Get

Return _connectionString

End Get

Set(ByVal value As String)

_connectionString = value

End Set

End Property

''' <summary>

''' Get Factory By Provider

''' </summary>

''' <param name="oGetFactory"></param>

''' <returns></returns>

''' <remarks></remarks>

Private Function GetFactoryByProvider(ByVal oGetFactory As Providers) As
String

Select Case CType(oGetFactory, Providers)

Case Providers.Odbc

Return "System.Data.Odbc"

Case Providers.OleDb

Return "System.Data.OleDb"

Case Providers.SqlClient

Return "System.Data.SqlClient"

Case Providers.OracleClient

Return "System.Data.OracleClient"

Case Providers.MySql

Return "CorLab.MySql.MySqlClient"

End Select

Return ""

End Function

''' <summary>

''' Creates a new instance of a System.Data.Commom.dbParameter object.

''' </summary>

''' <param name="name"></param>

''' <param name="type"></param>

''' <param name="value"></param>

''' <returns>A System.Data.Commom.dbParameter object</returns>

''' <remarks></remarks>

Public Function CreateParameter(ByVal name As String, ByVal type As DbType,
ByVal value As Object) As IDataParameter

Return CreateParameter(name, type, value, ParameterDirection.Input)

End Function

''' <summary>

''' Creates a new instance of a System.Data.Commom.dbParameter object.

''' </summary>

''' <param name="name"></param>

''' <param name="type"></param>

''' <param name="value"></param>

''' <param name="direction"></param>

''' <returns>A System.Data.Commom.dbParameter object</returns>

''' <remarks></remarks>

Public Function CreateParameter(ByVal name As String, ByVal type As DbType,
ByVal value As Object, ByVal direction As ParameterDirection) As
IDataParameter

Dim param As DbParameter = Nothing

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim Con As DbConnection = oProviderFactory.CreateConnection

Dim cmd As DbCommand = Con.CreateCommand

param = cmd.CreateParameter()

If Not param Is Nothing Then

param.ParameterName = name

param.DbType = type

param.Direction = direction

param.Value = value

End If

Return param

End Function

''' <summary>

''' Executes a Transact-SQL statement against the connection and returns the
number of rows affected.

''' </summary>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <returns></returns>

''' <remarks>The number of rows affected.</remarks>

Public Function ExecuteNonQuery(ByVal cmdType As CommandType, ByVal cmdText
As String) As Integer

Return ExecuteNonQuery(cmdType, cmdText, Nothing)

End Function

''' <summary>

''' Executes a Transact-SQL statement against the connection and returns the
number of rows affected.

''' </summary>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <param name="cmdParms">Set Array of Parameter</param>

''' <returns>The number of rows affected.</returns>

''' <remarks></remarks>

Public Function ExecuteNonQuery(ByVal cmdType As CommandType, ByVal cmdText
As String, ByVal cmdParms As DbParameter()) As Integer

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim Con As DbConnection = oProviderFactory.CreateConnection

Dim cmd As DbCommand = Con.CreateCommand

Dim trans As DbTransaction = Nothing

Try

Con.ConnectionString = ConnectionString

cmd.Connection = Con

cmd.CommandText = cmdText

cmd.Parameters.Clear()

cmd.CommandType = cmdType

If Not (IsNothing(cmdParms)) Then

Dim param As DbParameter

For Each param In cmdParms

cmd.Parameters.Add(param)

Next

End If

Con.Open()

trans = Con.BeginTransaction

cmd.Transaction = trans

Dim val As Integer = cmd.ExecuteNonQuery()

cmd.Parameters.Clear()

trans.Commit()

Return val

Catch ex As DbException

trans.Rollback()

Throw New Exception("DB Exception " & ex.Message)

Catch exx As Exception

trans.Rollback()

Throw New Exception("ExecuteNonQuery Function", exx)

Finally

Con.Close()

cmd = Nothing

cmdParms = Nothing

End Try

End Function

''' <summary>

''' Executes the query, and returns the first column of the first row in the
result set returned by the query.

''' </summary>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <returns></returns>

''' <remarks>The first column of the first row in the result set, or a null
reference if the result set is empty.</remarks>

Public Function ExecuteScalar(ByVal cmdType As CommandType, ByVal cmdText As
String) As Object

Return ExecuteScalar(cmdType, cmdText, Nothing)

End Function

''' <summary>

''' Executes the query, and returns the first column of the first row in the
result set returned by the query.

''' </summary>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <param name="cmdParms">Set Array of Parameter</param>

''' <returns></returns>

''' <remarks>The first column of the first row in the result set, or a null
reference if the result set is empty.</remarks>

Public Function ExecuteScalar(ByVal cmdType As CommandType, ByVal cmdText As
String, ByVal cmdParms As DbParameter()) As Object

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim Con As DbConnection = oProviderFactory.CreateConnection

Dim cmd As DbCommand = Con.CreateCommand

Dim trans As DbTransaction = Nothing

Try

Con.ConnectionString = ConnectionString

cmd.Connection = Con

cmd.CommandText = cmdText

cmd.Parameters.Clear()

cmd.CommandType = cmdType

If Not (IsNothing(cmdParms)) Then

Dim param As DbParameter

For Each param In cmdParms

cmd.Parameters.Add(param)

Next

End If

Con.Open()

trans = Con.BeginTransaction

cmd.Transaction = trans

Dim val As Object = cmd.ExecuteScalar()

cmd.Parameters.Clear()

trans.Commit()

Return val

Catch ex As DbException

trans.Rollback()

Throw New Exception("DB Exception " & ex.Message)

Catch exx As Exception

trans.Rollback()

Throw New Exception("ExecuteScalar Function", exx)

Finally

Con.Close()

cmd = Nothing

cmdParms = Nothing

End Try

End Function

''' <summary>

''' ExecuteTable Return DataTable

''' </summary>

''' <param name="cmdType">The command Type</param>

''' <param name="cmdText">The command text to execute</param>

''' <returns>DataTable</returns>

''' <remarks></remarks>

Public Function ExecuteTable(ByVal cmdType As CommandType, ByVal cmdText As
String) As DataTable

Return ExecuteTable(cmdType, cmdText, Nothing)

End Function

''' <summary>

''' ExecuteTable Return DataTable

''' </summary>

''' <param name="cmdType">The command Type</param>

''' <param name="cmdText">The command text to execute</param>

''' <param name="cmdParms">Array of Parameters</param>

''' <returns>DataTable</returns>

''' <remarks></remarks>

Public Function ExecuteTable(ByVal cmdType As CommandType, ByVal cmdText As
String, ByVal cmdParms As DbParameter()) As DataTable

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim oDataAdapter As DbDataAdapter

Dim Con As DbConnection = oProviderFactory.CreateConnection

Dim cmd As DbCommand

Try

Con.ConnectionString = ConnectionString

cmd = Con.CreateCommand

PrepareCommand(cmd, Con, cmdType, cmdText, cmdParms)

oDataAdapter = oProviderFactory.CreateDataAdapter

Dim oDataTable As New DataTable

oDataAdapter.SelectCommand = cmd

oDataAdapter.Fill(oDataTable)

cmd.Parameters.Clear()

Return oDataTable

Catch ex As DbException

Throw New Exception("DB Exception ", ex)

Catch exx As Exception

Throw New Exception("ExecuteTable Exception :", exx)

Finally

Con.Close()

cmd = Nothing

oDataAdapter = Nothing

End Try

End Function

''' <summary>

''' <para>Executes the <paramref name="commandText"/> as part of the given
<paramref name="transaction" /> and returns the results in a new <see
cref="DataSet"/>.</para>

''' </summary>

''' <param name="cmdType"></param>

''' <param name="cmdText">The command text to execute.</param>

''' <returns></returns>

''' <remarks></remarks>

Public Function ExecuteDataSet(ByVal cmdType As CommandType, ByVal cmdText
As String) As DataSet

Return ExecuteDataSet(cmdType, cmdText, Nothing)

End Function

''' <summary>

''' <para>Executes the <paramref name="commandText"/> as part of the given
<paramref name="transaction" /> and returns the results in a new <see
cref="DataSet"/>.</para>

''' </summary>

''' <param name="cmdType">One of the <see cref="CommandType"/>
values.</param>

''' <param name="cmdText">The command text to execute.</param>

''' <param name="cmdParms"></param>

''' <returns>DataSet</returns>

''' <remarks></remarks>

Public Function ExecuteDataSet(ByVal cmdType As CommandType, ByVal cmdText
As String, ByVal cmdParms As DbParameter()) As DataSet

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim con As DbConnection = oProviderFactory.CreateConnection

Dim oDataAdapter As DbDataAdapter = oProviderFactory.CreateDataAdapter

Dim cmd As DbCommand = con.CreateCommand

Try

con.ConnectionString = ConnectionString

cmd = con.CreateCommand

PrepareCommand(cmd, con, cmdType, cmdText, cmdParms)

oDataAdapter = oProviderFactory.CreateDataAdapter

Dim oDataSet As New DataSet

oDataAdapter.SelectCommand = cmd

oDataAdapter.Fill(oDataSet)

cmd.Parameters.Clear()

Return oDataSet

Catch ex As DbException

Throw New Exception("SQL Exception ", ex)

Catch exx As Exception

Throw New Exception("Execute DataSet", exx)

Finally

con.Close()

cmd = Nothing

oDataAdapter = Nothing

End Try

End Function

''' <summary>

''' Sends the System.Data.Common.DbCommand.CommandText to the
System.Data.Common.DbCommand.Connection and builds a
System.Data.Common.DbDataReader.

''' </summary>

''' <param name="conn">A System.Data.Common.DbConnection that represents the
connection to an instance of DataSource.</param>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <returns>A System.Data.Common.DbDataReader object.</returns>

''' <remarks></remarks>

Public Function ExecuteReader(ByRef conn As DbConnection, ByVal cmdType As
CommandType, ByVal cmdText As String) As DbDataReader

Return ExecuteReader(conn, cmdType, cmdText, Nothing)

End Function

''' <summary>

''' Sends the System.Data.Common.DbCommand.CommandText to the
System.Data.Common.DbCommand.Connection and builds a
System.Data.Common.DbDataReader.

''' </summary>

''' <param name="conn">A System.Data.Common.DbConnection that represents the
connection to an instance of DataSource.</param>

''' <param name="cmdType">Set the Transact-SQL statement or stored procedure
to execute at the data source.</param>

''' <param name="cmdText">The text of the query.</param>

''' <param name="cmdParms">Set Array of Parameter</param>

''' <returns>A System.Data.Common.DbDataReader object.</returns>

''' <remarks></remarks>

Public Function ExecuteReader(ByRef conn As DbConnection, ByVal cmdType As
CommandType, ByVal cmdText As String, ByVal cmdParms As DbParameter()) As
DbDataReader

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

conn = oProviderFactory.CreateConnection

Dim oDataAdapter As DbDataAdapter = oProviderFactory.CreateDataAdapter

Dim cmd As DbCommand = conn.CreateCommand

Dim rdr As DbDataReader

Try

PrepareCommand(cmd, conn, cmdType, cmdText, cmdParms)

rdr = cmd.ExecuteReader()

cmd.Parameters.Clear()

'Our Notes: It appears that this is not needed because the PrepareCommand
takes care of it. This was probably left in by mistake.

'If Not (IsNothing(cmdParms)) Then

' Dim param As DbParameter

' For Each param In cmdParms

' cmd.Parameters.Add(param)

' Next

'End If

Return rdr

Catch ex As DbException

Throw New Exception("SQL Exception ", ex)

Catch exx As Exception

Throw New Exception("ExecuteReader", exx)

Finally

cmd = Nothing

End Try

End Function

''' <summary>

'''

''' </summary>

''' <param name="cmdType"></param>

''' <param name="cmdText"></param>

''' <returns></returns>

''' <remarks></remarks>

Public Function ExecuteRow(ByVal cmdType As CommandType, ByVal cmdText As
String) As DataRow

Return ExecuteRow(cmdType, cmdText, Nothing)

End Function

''' <summary>

'''

''' </summary>

''' <param name="cmdType"></param>

''' <param name="cmdText"></param>

''' <param name="cmdParms"></param>

''' <returns></returns>

''' <remarks></remarks>

Public Function ExecuteRow(ByVal cmdType As CommandType, ByVal cmdText As
String, ByVal cmdParms As DbParameter()) As DataRow

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim Con As DbConnection = oProviderFactory.CreateConnection

Con.ConnectionString = ConnectionString

Dim cmd As DbCommand = Con.CreateCommand

Dim oDataAdapter As DbDataAdapter = oProviderFactory.CreateDataAdapter

Dim oDataRow As DataRow = Nothing

Dim oDataTable As New DataTable

Try

PrepareCommand(cmd, Con, cmdType, cmdText, cmdParms)

oDataAdapter.SelectCommand = cmd

oDataAdapter.Fill(oDataTable)

cmd.Parameters.Clear()

If oDataTable.Rows.Count = 0 Then

Return Nothing

Else

Dim oRow As DataRow = oDataTable.Rows(0)

Return oRow

End If

Catch ex As DbException

Throw New Exception("DB Exception ", ex)

Catch exx As Exception

Throw New Exception("ExecuteRow", exx)

Finally

Con.Close()

oDataTable = Nothing

cmd = Nothing

oDataAdapter = Nothing

End Try

End Function

''' <summary>

''' Execute Adapter

''' </summary>

''' <param name="oTable"></param>

''' <param name="cmdText"></param>

''' <param name="lngMaxID"></param>

''' <returns></returns>

''' <remarks></remarks>

Public Function ExecuteAdapter(ByVal oTable As DataTable, ByVal cmdText As
String, Optional ByRef lngMaxID As Long = 0) As Boolean

Dim oProviderFactory As DbProviderFactory =
DbProviderFactories.GetFactory(GetFactoryByProvide r(_factory))

Dim conn As DbConnection = oProviderFactory.CreateConnection

conn.ConnectionString = ConnectionString

Dim oSqlCmd As DbCommand = conn.CreateCommand

Dim oDataAdapter As DbDataAdapter = oProviderFactory.CreateDataAdapter

Dim oCmdBuilder As DbCommandBuilder = oProviderFactory.CreateCommandBuilder

Dim trans As DbTransaction = Nothing

Try

If Not conn.State = ConnectionState.Open Then

conn.Open()

End If

trans = conn.BeginTransaction

oSqlCmd.Transaction = trans

oSqlCmd.Connection = conn

oSqlCmd.CommandText = cmdText

oSqlCmd.CommandType = CommandType.Text

oDataAdapter.SelectCommand = oSqlCmd

oCmdBuilder.DataAdapter = oDataAdapter

oCmdBuilder.GetUpdateCommand()

oCmdBuilder.GetInsertCommand()

oCmdBuilder.GetDeleteCommand()

oDataAdapter.Update(oTable)

oDataAdapter.SelectCommand.CommandText = "SELECT @@IDENTITY"

trans.Commit()

' lngMaxID = CType(oDataAdapter.SelectCommand.ExecuteScalar(), Long)

Catch ex As DbException

trans.Rollback()

Throw New Exception("DB Exception ", ex)

Catch exx As Exception

trans.Rollback()

Throw New Exception("ExeculateAdapter", exx)

Finally

If conn.State = ConnectionState.Open Then conn.Close()

oSqlCmd = Nothing

oDataAdapter = Nothing

oCmdBuilder = Nothing

End Try

End Function

''' <summary>

''' Prepare Command

''' </summary>

''' <param name="cmd">Assigns a <paramref name="connection"/> to the
<paramref name="command"/> and discovers parameters if needed.</param>

''' <param name="conn">The connection to assign to the command.</param>

''' <param name="cmdType">The command that contains the query to
prepare.</param>

''' <param name="cmdText"></param>

''' <param name="cmdParms"></param>

''' <returns></returns>

''' <remarks></remarks>

Public Function PrepareCommand(ByRef cmd As DbCommand, ByRef conn As
DbConnection, ByRef cmdType As CommandType, ByRef cmdText As String, ByRef
cmdParms As DbParameter()) As Boolean

If Not conn.State = ConnectionState.Open Then

conn.Open()

End If

Try

cmd.Connection = conn

cmd.CommandText = cmdText

cmd.Parameters.Clear()

cmd.CommandType = cmdType

If Not (IsNothing(cmdParms)) Then

Dim param As DbParameter

For Each param In cmdParms

cmd.Parameters.Add(param)

Next

End If

Catch ex As DbException

Throw New Exception("DB Exception ", ex)

Catch exx As Exception

Throw New Exception("PrepareCommand : ", exx)

End Try

End Function

End Class

Public Enum Providers As Integer

Odbc = 1

OleDb = 2

SqlClient = 3

OracleClient = 4

MySql = 5

End Enum





Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.