SQL Server:查询执行中的无效对象名称

时间:2010-07-22 09:59:34

标签: c# sql-server sql-server-2005

我正在尝试执行Insert语句,但不断收到Invalid object name错误。

这是我的代码:

public string addNewComment(int userID, int pageID, string title, string comment)
{
    string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
    "VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";

    adapter.InsertCommand = new SqlCommand(query, connection);

    //ExecuteNonQuery retuens number of rows affected
    int numRows = adapter.InsertCommand.ExecuteNonQuery();
    return numRows.ToString();
}

这是我的错误消息:

  

System.Data.SqlClient.SqlException:   无效的对象名称   'dbo.nokernok_kommentarer'。在        System.Data.SqlClient.SqlConnection.OnError(SQLEXCEPTION   exception,Boolean breakConnection)at        System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION   exception,Boolean breakConnection)at        System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject   stateObj)at        System.Data.SqlClient.TdsParser.Run(RunBehavior   runBehavior,SqlCommand cmdHandler,   SqlDataReader dataStream,   BulkCopySimpleResultSet   bulkCopyHandler,TdsParserStateObject   stateObj)at        System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串   methodName,Boolean async)at        System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult   result,String methodName,Boolean   sendToPipe)at   System.Data.SqlClient.SqlCommand.ExecuteNonQuery()   在        development.DAL.nokernokDAL.addNewComment(的Int32   userID,Int32 pageID,String title,   字符串注释)        C:\的Inetpub \ wwwroot的\ NAAF \ DAL \ nokernok.cs:行   49

任何人都可以帮我弄清楚为什么会出现这个错误吗?

更新

我应该使用正确的数据库,因为以下查询有效:

    public DataSet getSchools(string countyCode)
    {
        DataSet ds = new DataSet();
        string query = "SELECT * FROM nokernok_skoler WHERE kommunekode LIKE '" + countyCode.Substring(0, 2) + "%' ORDER BY enhetsnavn";
        adapter.SelectCommand = new SqlCommand(query, connection);
        adapter.Fill(ds);
        return ds;
    }

我的连接字符串如下所示:

SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();

// class constructor
public nokernokDAL()
{
    connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
    connection.Open();
}

2 个答案:

答案 0 :(得分:21)

你可能在错误的数据库中。在连接字符串中包含初始目录:

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername; ...
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^

或指定三部分名称:

INSERT INTO myDataBase.dbo.nokernok_kommentarer
            ^^^^^^^^^^

答案 1 :(得分:2)

从错误消息中可能看出,数据库中不存在表dbo.nokernok_kommentarer,或者它不是表,因此不可更新。

你检查过:

  • 您是否正在连接到您认为正在连接的服务器
  • 您是否正在连接到您认为正在连接的数据库
  • 您正在指定正确的目录(或其当前所称的任何目录=),即您确定它应该是dbo.而不是somethingElse.吗?
  • 表格dbo.nokernok_kommentarer是否存在?

如果从代码中复制SQL并在SQL Server Management Studio之类的内容中运行SQL,那么它是否可以正常运行?