none
启动调试后生成的错误如何解决的问题(1) RRS feed

  • 问题

  • 在制作考试系统网站时,启动调试出现了224个错误。多数是 “未定义类型”constr.db“和”Trim"的错误。不知道如何解决。自己目前使用的是Visual Web Developer 2008 express。  db.dv是自己建的一个类文件,其中“NameSpace constr”

    Imports System
    Imports System.Data
    Imports System.Data.SqlClient


    Public Class main
        Inherits System.Web.UI.Page


        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not Page.IsPostBack Then
                Textbox1.Text = ""
                TextBox2.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
            End If
        End Sub


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim strsql As String
            Dim conn As New Constr.db
            strsql = "select * from stuloginfo  where stuid='" & Textbox1.Text & " 'and stupassword='" & TextBox2.Text & " ' "
            Dim myconn As New SqlConnection(conn.getstr)
            Dim mycommand As New SqlCommand(strsql, myconn)
            Session("stuno") = Textbox1.Text
            Dim dr As SqlDataReader
            Try
                myconn.Open()
                dr = mycommand.ExecuteReader(CommandBehavior.CloseConnection)
                While dr.Read()
                    If Trim(dr.Item(3)) = "1111" Then
                        Response.Redirect("stulogin.aspx")
                    Else
                        Response.Redirect("student.aspx")
                    End If
                End While
            Catch ex As SqlException
                Label1.Text = ex.Message
            Finally
                dr.Close()
                myconn.Close()
                mycommand.Dispose()
            End Try
        End Sub


    qianghuishi

    2012年3月16日 13:08

答案

全部回复

  • 补充:Trim的错误提示是:未声明名称”Trim“

    qianghuishi

    2012年3月16日 13:09
  • 这些Code应该是从书上抄来的?
    您应该没有Copy完整,再回头看看书上应该有

    Constr.db

    的定义

    Trim是旧写法,如果没有的话,可以用String.Trim取代

    http://msdn.microsoft.com/zh-cn/library/t97s7bs3(v=vs.90).aspx

    Sample:
    那一句可改成
    dr.Item(3).ToString().Trim()




    2012年3月16日 15:38
  • 您好!谢谢你的回复!

    这个...确实是自己抄来的...

    对于Trim,使用您说的也确实没有产生错误了。从224个减到了173个错误。但对于constr.db还是有些不解

    向您说明下情况,看看您还能不能帮我指正一下。

    书中有连接字符串的类文件db.vb,代码如下:

    Imports System
    Namespace constr
        Public Class db
            Public Shared getstr As String
            Shared Sub New()
                getstr = "Data Source=.;user id=sa;initial catalog=webexam"
            End Sub
        End Class
    End Namespace

    书中又介绍说创建连接字符串是为了与数据库服务器连接,使用sqlconnection对象可以创建连接。

    Dim strconn as new constr.db

    Dim myconn as sqlconnection=new sqlconnection(strconn.getstr)

    说创建连接以后就可以使用SQL命令执行数据库的各种操作。

    所以自己已经创建了db.vb的类文件。不知道为什么constr.db就不可以了呢?


    qianghuishi

    2012年3月17日 0:54
  • 对于constr.db还是有些不解

    向您说明下情况,看看您还能不能帮我指正一下。

    书中有连接字符串的类文件db.vb,代码如下:

    Imports System
    Namespace constr
        Public Class db
            Public Shared getstr As String
            Shared Sub New()
                getstr = "Data Source=.;user id=sa;initial catalog=webexam"
            End Sub
        End Class
    End Namespace

    书中又介绍说创建连接字符串是为了与数据库服务器连接,使用sqlconnection对象可以创建连接。

    Dim strconn as new constr.db

    Dim myconn as sqlconnection=new sqlconnection(strconn.getstr)

    说创建连接以后就可以使用SQL命令执行数据库的各种操作。

    所以自己已经创建了db.vb的类文件。不知道为什么constr.db就不可以了呢?


    qianghuishi

    首先:

    1)请确定你已经引入了命名空间——

    Imports constr

    2)另外请注意,既然你连接字符串在静态构造函数中才被实例化,没有必要直接new一个实体对象,直接——

    Dim myconn as SqlConnection=New SqlConnection(db.getstr)

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月17日 2:26
  • 有缘人你好!这次您的指导貌似没有效果。具体如下,希望能再帮我指正一下。

    在db.vb类文件中引入命名空间确实可以。但在其它文件中貌似还是有错误。代码如下。

    Imports constr
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not Page.IsPostBack Then
                If Session("coursename") = "" Then
                    Label1.Text = "请先选择课程,再进行试题添加。"
                Else
                    Label1.Text = "您将进行《" & Session("coursename").ToString().Trim() & "》课程知识点的添加。"
                End If
            End If
        End Sub


        Public Shared j As Integer = 1


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


            Dim strsql, course As String
            Dim conn As New constr.db
            Dim i, courseid As Integer
            strsql = "select max(id) as maxno from klgpointab"
            Dim dr As SqlDataReader
            Dim myconn As SqlConnection = New SqlConnection(db.getstr)
            Dim mycommand1 As New SqlCommand(strsql, myconn)
            myconn.Open()
            dr = mycommand1.ExecuteReader()
            dr.Read()
            If IsDBNull(dr.Item(0)) Then
                i = 0
            Else
                i = dr.Item(0) + 1
            End If
            dr.Close()
            Dim dr1 As SqlDataReader
            course = Session("coursename")
            strsql = "select courseid from courseinfo where coursename='" & course & "'"
            Dim mycommand2 As New SqlCommand(strsql, myconn)
            dr1 = mycommand2.ExecuteReader
            If dr1.Read() Then
                courseid = dr1.Item(0)
            End If
            dr1.Close()
            strsql = "insert into klgpointab(id,chapter,knowledgepoint,coursename) values("
            strsql = strsql & i & ","
            strsql = strsql & courseid * 100 + j & ",'"
            strsql = strsql & TextBox1.Text & "',"
            strsql = strsql & "'" & course.ToString().Trim() & "')"
            Dim mycommand3 As New SqlCommand(strsql, myconn)
            mycommand3.ExecuteNonQuery()
            j = j + 1
            TextBox1.Text = ""
            myconn.Close()
            mycommand1.Dispose()
            mycommand2.Dispose()
            mycommand3.Dispose()
            myconn.Dispose()
        End Sub
    End Class



    qianghuishi

    2012年3月17日 2:43
  • 解决办法:

    1)直接把连接字符串写入到SqlConnection中,不要创建一个类。

    2)IsDbNull改成:dr.Item(0) Is DbNull.Value


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月17日 2:46
  • 有缘人好!书上讲的是为了使系统移植方便,可把数据库字符串放到一个类文件中,以后每次调用此类文件即可,如果数据库环境变化了,也只需修改此文件的数据库连接字符串即可。您觉得有这个类文件的情况下还能做些修改吗?

    qianghuishi

    2012年3月17日 3:12
  • 话说我一次运行,最多也就几十个错误(抽象类改变了接口,导致众多子类出错),你200多个错误也就只能是楼上所说的复制来的代码。建议你把这些代码打散,逐块击破~
    2012年3月17日 3:17
  • 你应该把连接字符串放入到web.config中,然后引入System.Configuration命名空间(请先引入System.Configuration.dll),最后使用ConfigurationManager.ConnectionStrings["名字"].ConnectionString读取出来,因为web.config是xml文本文件,这就意味着你可以随时更改这个文件中连接字符串而不必重新编译整个程序。

    web.config配置(找到connectionStrings节点),在<configuration>……</configuration>中:

    <configuration>
     ………………
    <connectionStrings>
      <add 
        name="名称" 
        connectionString="连接字符串……"
      />
    </connectionStrings>
    ………………
    </configuration>

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月17日 3:22