我写了这段代码,但它不起作用。提供无效的对象名称“库存”。有什么建议吗?
using (SqlConnection cn = new SqlConnection())
{
cn.ConnectionString =
@"Data Source=(local);Integrated Security=SSPI;" +
"Initial Catalog=AutoLot";
cn.Open();
string strSQL = "Select * From Inventory";
SqlCommand myCommand = new SqlCommand(strSQL, cn);
// Obtain a data reader a la ExecuteReader().
using (SqlDataReader mydatareader = mycommand.ExecuteReader())
{}
答案 0 :(得分:0)
签入数据库清单表是否存在,如果存在,则两个名称应相同
答案 1 :(得分:0)
如果您已经检查了所有数据库设置,访问权限和表定义,仍然无法摆脱该错误?
这是因为ASP.net 无法理解您的SQL查询 - 这听起来很震撼。
我遇到了同样的问题,UPDATE
语句想要使用aliases
而不是通常预期的dbo.myTable
名称定义。
避免这种情况的最简单方法是将asp.net放入Stored Procedure
,而不是像SQL Server那样解析SQL(<!}}。
这是我直接来自SQL Server 2005的SQL,它完美地工作......
UPDATE tsa
SET tsa.ActionComplete = @ActionComplete,
tsa.CompleteDate = GETDATE(),
tsa.Notes = @ActionNotes
FROM blahblah
WHERE blahblah
但是出于任何原因,SqlDataSource
控件中的ASP.net解析器无法理解它(即使它在GUI的测试查询中完美运行设有!)。
我得到了
&#39; tsa&#39;
中的无效对象名称
所以我把这个地方放在一个存储过程中......
USE [mydatabase];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[spTETupdateActions]
@StudentID VARCHAR(10),
@ActionComplete INT = 0,
@ActionNotes VARCHAR(MAX),
@TETmeetingID INT,
@WeekNo INT,
@TETID INT,
@TETdate DATETIME,
@ActionItem VARCHAR(MAX)
WITH
EXEC AS CALLER AS
UPDATE tsa
SET tsa.ActionComplete = @ActionComplete,
tsa.CompleteDate = GETDATE(),
tsa.Notes = @ActionNotes
FROM blahblah
WHERE blahblah
GO
瞧!没有更多错误!为什么?因为SQL的解析是在SQL Server内部完成的,而不是ASP.net!