c# 中 table 名称的无效对象名称 sql 异常

invalid object name sql exception for table name in c#

我写了这段代码,但它不起作用。给出无效的对象名称 'Inventory'`。有什么建议吗?

 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())
            {}

检查数据库清单 table 是否存在,如果存在则两个名称应该相同

如果您已经检查了所有数据库设置、访问权限和 table 定义,但仍然无法消除该错误?

这是因为 ASP.net 无法理解 您的 SQL 查询 - 听起来可能令人震惊。

我遇到了同样的问题,UPDATE 语句想要使用 aliases 而不是通常预期的 dbo.myTable 名称定义。

避免这种情况的最简单方法是将代码放入 asp.net 不像 SQL 服务器那样解析 SQL (!!) =15=].

这是我的 SQL 直接来自 SQL Server 2005 并且它按原样完美运行...

UPDATE tsa
SET tsa.ActionComplete = @ActionComplete,
    tsa.CompleteDate = GETDATE(),
    tsa.Notes = @ActionNotes
FROM blahblah
WHERE blahblah

但是出于某种原因,SqlDataSource 控件中的 ASP.net 解析器无法理解它(即使它 运行 完全位于 GUI 的 中测试查询 功能!)。

我得到了

invalid object name in 'tsa'

所以我将批次放在存储过程中...

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 服务器内部完成的,而不是 ASP.net!