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

本文关键字:sql 异常 无效 对象 | 更新日期: 2023-09-27 18:21:15

我写了这段代码,但它不起作用。给出无效的对象名称"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())
            {}

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

是否存在签入数据库库存表,如果存在,则两个名称应为相同的

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

这是因为ASP.net无法理解您的SQL查询——尽管这听起来很令人震惊。

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

避免这种情况的最简单方法是将代码放入Stored Procedure中,因为asp.net不会像SQL Server那样解析SQL(!!)。

这是我的SQL直接从SQL Server 2005,它工作得很好…

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

但无论出于何种原因,SqlDataSource控件中的ASP.net解析器都无法理解它(尽管它在GUI的测试查询功能中完美运行!)。

我得到

"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 Server而不是ASP.net中完成的!