方法一:我们在使用sql 的 insert into的时候,如果使用的是Parameters的方式来添加数据的话
一般会sqlcommand.Parameters()或oledbcommand.Parameters方式,但是这种方式不能够
征对所有的表进行操作,如果此时我操作一个新闻表,可以要oledbcommand.Parameters.add("@newstitle",oledbtype.varchar).value=txttitle.text如果此时我要操作一个产品表,可能要oledbcommand.Parameters.add("@productname",oledbtype.varchar).value=txtproductname.text我现在就使用System.Data.OleDb.OleDbParameterCollection的方法,在页面的后代码中将所有Parameter加入到此对象中。例:页面中的后代码dim conn as new oledbconnection(Dsn)
dim cmd as oledbcommand=conn.createcommand()
dim strsql as string="insert into news (title,content) values(?,?)"
dim parameters as system.data.oledb.oledbparmetercollection=cmd.Parameters
parameters.add("title",oledbtype.varchar).value=txttitle.text
parameters.add("content",oledbtype.varchar).value=txtcontent.text'实例化一个自定义的类,类中接受strsql,oledbcommand对象,并写入数据到表中。dim o as new study.option_database'调用类的insertinto_newstable方法,传一个strsql语句以及一个oledbcommand对象o.insertinto_newstable(strsql,cmd)
类中的方法
 Public Function insertinto_newstable(ByVal cmd As OleDbCommand, ByVal strsql As String) As Boolean            cmd.CommandText = strsql
            Try
                conn.Open()
                cmd.ExecuteNonQuery()
                Return True
            Catch ex As Exception
                msg.Text = ex.Message.ToString
                Return False
            Finally
                cmd.Dispose()
                conn.Dispose()
            End Try End Function这一种方法的优势是比较通用,只要传一个sql语句,以及oledbcommand或sqlcommand对象,就可以完成对任何表进行插入数据的操作。
有一个疑问就是:在类中调用的cmd.dispose的方法,页面中的cmd对象会不会随着类中的cmd对象的销毁而销毁?
方法二,使用属性构造器类中(非页面中的类):Public Class option_
Private title,content As String Public Property _title() As String
            Get
                Return title
            End Get
            Set(ByVal value As String)
                title = value
            End Set
 End PropertyPublic Property _content() As String
            Get
                Return content
            End Get
            Set(ByVal value As String)
                content = value
            End Set
 End Property
end class Public Function insertinto_newstable(ByVal strsql As String) As Boolean            Dim cmd As OleDbCommand = conn.CreateCommand
            With cmd
                .CommandText = strsql
                .Parameters.Add("@title", OleDbType.VarChar).Value = _title
                .Parameters.Add("@content", OleDbType.VarChar).Value =_content
               
            End With
            Try
                conn.Open()
                cmd.ExecuteNonQuery()
                Return True
            Catch ex As Exception
                msg.Text = ex.Message.ToString
                Return False
            Finally
                conn.Dispose()
                cmd.Dispose()
            End Try        End Function页面中的后代码
设置类中的属性
option_._title=txttitle.text
option_._content=txtcontent.text
dim strsql as string="insert into news (title,content) values(?,?) "调用类的方法option_.insertinto_newstable(strsql)此种方法,只需传一个sql语句中,但是需要在类中去构造很多的属性,征对不同的表,要构成比较多的属性,不够通用。Parameters.add的方法在类中指定,而上种方法却是在页面中的后代码中指点的。大家谈谈这两种作法哪种才规范一些,效率更好一些。