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

时间:2015-11-10 08:52:06

标签: c# database ado.net

我写了这段代码,但它不起作用。提供无效的对象名称“库存”。有什么建议吗?

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

2 个答案:

答案 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!