Asp.net 变量为';t从SQl查询中获取数据

Asp.net 变量为';t从SQl查询中获取数据,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我设置了一个SQL来查询数据库并查找表中的金额总和,但是它没有返回任何内容,所有的数据字段都是正确的,而且查询的运行方式也是正确的,我认为问题是将其传递给数据读取器的变量,如果有人能够纠正这一点,我将不胜感激 这是代码,我认为这与datareader有关: System.Web.Services.Protocols.SoapException:服务器无法处理请求--- System.Data.OleDb.OLEDBEException:FROM子句中存在语法错误。位于System.Data.Ol

我设置了一个SQL来查询数据库并查找表中的金额总和,但是它没有返回任何内容,所有的数据字段都是正确的,而且查询的运行方式也是正确的,我认为问题是将其传递给数据读取器的变量,如果有人能够纠正这一点,我将不胜感激

这是代码,我认为这与datareader有关:

System.Web.Services.Protocols.SoapException:服务器无法处理请求---

System.Data.OleDb.OLEDBEException:FROM子句中存在语法错误。位于System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS 数据库参数、对象和执行器结果)位于 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteCommand(命令行为 行为、对象和执行器结果) System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior) 在汇丰银行。支票余额(Int64账号)在汇丰银行。支票余额(Int64账号) accountnumber)--内部异常堆栈跟踪的结束---

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException:服务器无法运行 处理请求。-->System.Data.OleDb.OLEDBEException:语法错误 在FROM子句中。在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS 数据库参数、对象和执行器结果)位于 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteCommand(命令行为 行为、对象和执行器结果) System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior) 在汇丰银行。支票余额(Int64账号)在汇丰银行。支票余额(Int64账号) accountnumber)--内部异常堆栈跟踪的结束---

这是正在调用的代码

    'Creates a service web method

    Private Function CheckBal(ByVal accountnumber As Long) As String

        'Database(drivers, connections And commands)
        Dim BalanceDr As OleDbDataReader
        Dim BalanceConn As OleDbConnection
        Dim BalanceCmd As OleDbCommand

        'Database connection string
        Dim Connx As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../database/HSBC.mdb") & ";"

        'SQL

        Dim SQL As String = "SELECT Transaction_Amount FROM Transaction WHERE Account_Number =" & accountnumber & ";"

        Dim bal As String

        'Open the connection to the database
        BalanceConn = New OleDbConnection(Connx)
        BalanceConn.Open()
        BalanceCmd = New OleDbCommand(SQL, BalanceConn)

        'Create a DataReader that will return information.
        BalanceDr = _
        BalanceCmd.ExecuteReader(CommandBehavior.CloseConnection)

        If BalanceDr.Read() Then
            'A row was returned
            bal = BalanceDr(0)
        Else
            'A row was not returned
            bal = "No Balance For Account Found"
        End If
        BalanceDr.Close()
        Return SQL
    End Function
End Class

如何设置权限

下面简要介绍了权限的工作方式,以及服务器管理员需要做些什么来设置权限,以防您感到好奇

ASP页面由匿名用户通过web浏览器访问 当用户通过web浏览器访问这些页面时,IIS(默认情况下)将使用一个名为iUSR_uu或“everyone”的Windows NT帐户

要设置权限,您必须在服务器上并浏览到数据库所在的文件夹。然后右键单击并选择“属性”。然后授予该帐户更改或修改数据库所在文件夹的权限。更改或修改意味着。。。r w x d(读/写/执行/删除)。将来,当您将另一个数据库放在同一目录中时,它通常会继承权限,您不必再次询问。如果删除并重新创建该目录,将丢失其权限,并且必须重新设置权限

希望这能让您更好地了解在ASP脚本和数据库无法正常工作时发生的情况

选项2)不确定jet是否将事务视为保留字。试着把它放在[]里

SELECT Transaction_Amount FROM [Transaction] WHERE Account_Number =" & accountnumber & ";"

如何设置权限

下面简要介绍了权限的工作方式,以及服务器管理员需要做些什么来设置权限,以防您感到好奇

ASP页面由匿名用户通过web浏览器访问 当用户通过web浏览器访问这些页面时,IIS(默认情况下)将使用一个名为iUSR_uu或“everyone”的Windows NT帐户

要设置权限,您必须在服务器上并浏览到数据库所在的文件夹。然后右键单击并选择“属性”。然后授予该帐户更改或修改数据库所在文件夹的权限。更改或修改意味着。。。r w x d(读/写/执行/删除)。将来,当您将另一个数据库放在同一目录中时,它通常会继承权限,您不必再次询问。如果删除并重新创建该目录,将丢失其权限,并且必须重新设置权限

希望这能让您更好地了解在ASP脚本和数据库无法正常工作时发生的情况

选项2)不确定jet是否将事务视为保留字。试着把它放在[]里

SELECT Transaction_Amount FROM [Transaction] WHERE Account_Number =" & accountnumber & ";"

问题是
事务
,它也是数据库中的表名,是一个保留字;这就是为什么会出现语法错误

将SQL语句更改为将表名括在方括号中可以解决此问题:

Dim SQL As String = "SELECT Transaction_Amount FROM [Transaction] WHERE Account_Number =" & accountnumber & ";"

问题是
事务
,它也是数据库中的表名,是一个保留字;这就是为什么会出现语法错误

将SQL语句更改为将表名括在方括号中可以解决此问题:

Dim SQL As String = "SELECT Transaction_Amount FROM [Transaction] WHERE Account_Number =" & accountnumber & ";"

应用程序是否具有对数据库文件夹的写入权限?没有它,它无法创建.ldb文件,因此没有锁,没有访问,没有查询,什么都没有。尽管如此,在打开连接后,请检查/database文件夹,并查看是否存在ldb文件。如果没有,则缺少权限。如果是它的网站,我不记得它是IIS的I_用户还是W_用户。在数据库中,它有读设计、修改设计、管理、读取数据、更新数据、插入数据和删除数据的权限,但它说它是以管理员身份运行的。另外,我在数据库文件夹中没有ldb文件。权限在那里,因为我有另一个正在运行的服务正在保存到数据库和一个外部数据库。当连接打开时,会创建.ldb文件。手动打开.mdb,您将看到access