我建了一个类DB,想在程序里用,下面是类DB代码:
Imports System.Data
Imports System.Data.SqlClientPublic Class DB
    Dim sql As String = ""
    Sub CreateDataSource()
        Dim sqlcon As SqlConnection
        Dim sqlcom As SqlCommand
        Dim sqlad As SqlDataAdapter
        Dim ds As New DataSet
        Dim dv As New DataView        sqlcon = New SqlConnection("server=.;uid=sa;pwd=;database=数据库;))
        sqlad = New SqlDataAdapter(sql, sqlcon)
        sqlad.Fill(ds, "MyDataResult")        dv = ds.Tables("MyDataResult").DefaultView    End SubEnd Class
在也index.apsx页面中用CreateDataSource()总出错?
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            Dim sql As String
            sql = "Select * FROM test"
            Me.DataGrid1.DataSource = CreateDataSource()
            Me.DataGrid1.DataBind()
        End If
    End Sub

解决方案 »

  1.   

    先保证DB类生成了dll
    在index.apsx引用Import DB
    Dim objdb as DB;
    Me.DataGrid1.DataSource = objdb.CreateDataSource()
      

  2.   

    先保证DB类生成了dll?怎么生成,请指教!!
      

  3.   

    Imports System.Data
    Imports System.Data.SqlClientPublic Class DB
        Dim sql As String = ""
        Sub CreateDataSource()
            Dim sqlcon As SqlConnection
            Dim sqlcom As SqlCommand
            Dim sqlad As SqlDataAdapter
            Dim ds As New DataSet
            Dim dv As New DataView        sqlcon = New SqlConnection("server=.;uid=sa;pwd=;database=数据库;))
            sqlad = New SqlDataAdapter(sql, sqlcon)
            sqlad.Fill(ds, "MyDataResult")        dv = ds.Tables("MyDataResult").DefaultView    End SubEnd Class这个是一个类。这个类你写在哪个地方?
      

  4.   

    如果是同一个项目中就不要生成dll了。
    如果不是同一个项目中就要生成了。只要编译一下。在db类的项目bin目录下就有一个叫db.dll。
    在你index.aspx项目引用中添加引用。找到db.dll引用再程序中实例化db对像就可以用它里面的方法了。
      

  5.   

    Me.DataGrid1.DataSource = CreateDataSource()
    这句错了,要调用CreateDataSource()方法必须要先生成DB类的一个对象
    在index.apsx引用Import DB
    Dim objdb as DB;
    Me.DataGrid1.DataSource = objdb.CreateDataSource(),如果是在同一个项目下不需要把DB单独生成dll,如果不是同一项目下,则必须生成dll.
    生成方法是vbc /t:library /r:System.dll /r:System.Web.dll /out:DB.dll DB.vb
    当然你也可以在VS.net中建一个项目来生成DB.vb的dll
      

  6.   

    类DB.VB和index.asp是放在同一目录下的
      

  7.   

    在类DB里怎么样return 一个值
      

  8.   

    那就不用生成dll了,只需
    在index.apsx引用Import DB
    Dim objdb as DB;
    Me.DataGrid1.DataSource = objdb.CreateDataSource();
    就OK了
    前提是DB.VB和index.apsx是在同一项目中
      

  9.   

    Me.DataGrid1.DataSource = CreateDataSource() 你这个CreateDataSource()没有返回值啊。就算引用正确了,也编译不过啊。Function CreateDataSource() As DataView
            Dim sqlcon As SqlConnection
            Dim sqlcom As SqlCommand
            Dim sqlad As SqlDataAdapter
            Dim ds As New DataSet
            Dim dv As New DataView        sqlcon = New SqlConnection("server=.;uid=sa;pwd=;database=数据库;))
            sqlad = New SqlDataAdapter(sql, sqlcon)
            sqlad.Fill(ds, "MyDataResult")        dv = ds.Tables("MyDataResult").DefaultView
            Return dv
        End Sub
      

  10.   

    Public Shared Function CreateDataSource() As DataView
            Dim sqlcon As SqlConnection
            Dim sqlcom As SqlCommand
            Dim sqlad As SqlDataAdapter
            Dim ds As New DataSet
            Dim dv As New DataView        sqlcon = New SqlConnection("server=.;uid=sa;pwd=;database=数据库;))
            sqlad = New SqlDataAdapter(sql, sqlcon)
            sqlad.Fill(ds, "MyDataResult")        dv = ds.Tables("MyDataResult").DefaultView
            Return dv
    End Function