获取错误“查询输入必须至少包含一个表或查询。”
问题描述:
我正在使用visual studio 2010创建表单,您可以在其中编辑,删除或从AccessDatabase插入数据。当我尝试在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][email protected],[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:
<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]
如果这样的作品,这意味着在雇员表某种领域是什么,无法处理。 ..由于上述触发错误,这意味着代码无法处理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) "
呀,数据库是我的表的名称。 – chan
我怀疑这可能会导致问题,数据库通常是一个保留字。你能否将该表中的记录复制到另一个表中并更改代码以引用新的表名?如果这样的话,那么司机可能会被绊倒在保留字上.... – Sparky
我有一个名为Employees的新表,就像您建议的那样,但我仍然收到错误消息。 – chan