【问题标题】:variable is not declared. it may be inaccessible due to its protection level变量未声明。由于其保护级别,它可能无法访问
【发布时间】:2021-05-27 04:36:49
【问题描述】:

我是 VB.NET 的新手。

我的问题是我有一个文本框并将数据输入数据库

<asp:TextBox ID="txt_hello" runat="server"  Width="130px"></asp:TextBox></td>

然后我可以连接到数据库,但是当我在列中输入'hello'并提交时,它会弹出错误消息:

'txt_hello' 未声明。由于其保护级别,它可能无法访问。

Dim hello as String = txt.hello

If xxx  Then
sqlUpdate = "UPDATE xxx SET server='" ,Hello=" & hello & " 
ElseIf xxx Then
sqlUpdate = "INSERT INTO xxx (Hello ) values ("& hello & ")" 

我的数据库表列名是“Hello”。

谁能给我建议?

【问题讨论】:

  • 当您发布代码时,似乎遗漏了一些东西:txt_hello 没有出现在其中。 Mary 给出了good answer,但您还需要为该项目设置Option Strict On将其设为新 VB 项目的默认值 - 这会让 Visual Studio 告诉您甚至存在问题在您尝试运行代码之前。

标签: vb.net


【解决方案1】:

永远不要连接字符串来构建 sql 字符串。始终使用参数。 Using...End Using 块确保连接已关闭并释放,命令已释放。

    Dim sql As String
    If Condition1 Then
        sql = "UPDATE SomeTableName SET Hello= @Hello;"
    ElseIf Condition2 Then
        sql = "INSERT INTO SomeTableName (Hello ) values (@Hello);"
    Else
        Return
    End If
    Using con As New OleDbConnection(ConStr),
            cmd As New OleDbCommand(sql, con)
        cmd.Parameters.Add("@Hello", OleDbType.VarChar).Value = txt_Hello.Text
        con.Open()
        cmd.ExecuteNonQuery()
    End Using

【讨论】:

    【解决方案2】:

    你必须使用:

    txt_hello.Text
    

    txt_hello 是一个控件(文本框),而不是一个字符串。它的Text 属性是字符串。

    【讨论】:

    • 您好@Yuti Orlinsky,感谢您的回复,我尝试将 txt_hello 改为 txt_hello.text 但不起作用。:(
    • 您是否将Dim hello as String = txt.hello 替换为Dim hello as String = txt_hello.Text
    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多