Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 获取错误“;查询输入必须至少包含一个表或查询。”;_Asp.net_Vb.net_Ms Access_Ado.net - Fatal编程技术网

Asp.net 获取错误“;查询输入必须至少包含一个表或查询。”;

Asp.net 获取错误“;查询输入必须至少包含一个表或查询。”;,asp.net,vb.net,ms-access,ado.net,Asp.net,Vb.net,Ms Access,Ado.net,我正在使用VisualStudio2010创建一个表单,您可以在其中编辑、删除或插入Access数据库中的数据。当我尝试在web浏览器中运行表单时,会出现错误“查询输入必须至少包含一个表或查询”。我认为问题在于我的代码/语法,但我无法确定问题的原因。我在下面添加了一些代码,如有任何帮助/提示,将不胜感激。多谢各位 <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_

我正在使用VisualStudio2010创建一个表单,您可以在其中编辑、删除或插入Access数据库中的数据。当我尝试在web浏览器中运行表单时,会出现错误“查询输入必须至少包含一个表或查询”。我认为问题在于我的代码/语法,但我无法确定问题的原因。我在下面添加了一些代码,如有任何帮助/提示,将不胜感激。多谢各位

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
            DataFile="~/App_Data/database.accdb" SelectCommand="SELECT * FROM [database]"
            DeleteCommand="DELETE FROM [database] WHERE ([EmployeeID] = @EmployeeID)"
            UpdateCommand="UPDATE [database] SET [Phone]=@Phone,[FirstName] = @FirstName, [LastName]= @LastName  WHERE ([EmployeeID] = @EmployeeID)"
            InsertCommand="INSERT INTO [database] (Phone,FirstName,LastName) VALUES (@Phone,@FirstName,@LastName) WHERE ([EmployeeID] = @EmployeeID)">
            <InsertParameters>
             <asp:formparameter name="Phone" formfield="tbPhone" />
             <asp:formparameter name="FirstName"  formfield="tbFirstName" />
             <asp:formparameter name="LastName"  formfield="tbLastName" />
            </InsertParameters>
        </asp:AccessDataSource>
        <asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="False" 
            DataSourceID="AccessDataSource1" DataKeyNames="EmployeeID"
            AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True"
            EmptyDataText="There are no data records to display." Width="372px">
            <Columns>
                <asp:BoundField DataField="Phone" HeaderText="Phone"
                     SortExpression="Phone" />
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                    SortExpression="FirstName" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" 
                    SortExpression="LastName" />

            </Columns>
        </asp:GridView>        
    </td>
     </tr>
    <tr>
    <td>
        Phone Number: 
        <asp:TextBox ID="tbPhone" runat="server"></asp:TextBox><br /> 
        First Name:
        <asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox> <br /> 
        Last Name:&nbsp;
        <asp:TextBox ID="tbLastName" runat="server"></asp:TextBox> <br />           
        <asp:button id="Button1" runat="server" text="New Employee" onclick="InsertEmployee" />
    </td>
    </tr>

电话号码:

名字:
姓氏:

什么是[数据库]?那是你的桌子名吗?您需要指定一个表名,例如PERSONS或Employees

SELECT * FROM [database]
试试像这样的东西

SELECT * FROM Employee
现在试试这个

SELECT Phone,FirstName,LastName,EmployeeID FROM [employees]
如果这样做有效,则意味着Employees表中的某些字段是无法处理的。。。因为上面触发了一个错误,这意味着代码无法处理Autonum字段。请尝试以下操作:

SELECT Phone,FirstName,LastName,CAST(EmployeeID as INT) as EmployeeID 
       FROM [employees]
尝试将where子句完全从INSERT SQL中删除

  InsertCommand="INSERT INTO [database] (Phone,FirstName,LastName) VALUES (@Phone,@FirstName,@LastName) "

是的,数据库是我的表的名称。我怀疑这可能会导致问题,数据库通常是一个保留字。能否将该表中的记录复制到另一个表中,并更改代码以引用新表名?如果这样做有效,那么驱动程序可能会被保留字绊倒……我有一个名为Employees的新表,如您所建议的,但我仍然收到错误。您的代码看起来正常,此消息通常表示查询有语法错误。尝试将*替换为您需要的3个字段名,它可能是ACCESS无法处理的表中的数据类型…三个可见字段的数据类型是“文本”,EmployeeID是主键,在表中不可见,其数据类型是“自动编号”。因此,我只需输入“从[employees]选择Phone、FirstName、LastName”? 如果最后一句的语法正确,我会得到一个错误“DataBinding:'System.Data.DataRowView'不包含名为'EmployeeID'的属性”。另外,感谢所有帮助。:)