SQL Server: неверное имя объекта при выполнении запроса - PullRequest
13 голосов
/ 22 июля 2010

Я пытаюсь выполнить оператор вставки, но получаю ошибку 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 исключение, Boolean breakConnection) в System.Data.SqlClient.SqlInternalConnection.OnError (SqlException исключение, Boolean breakConnection) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methodName, логическое асинхронное) в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult результат, String methodName, Boolean sendToPipe) в System.Data.SqlClient.SqlCommand.ExecuteNonQuery () в development.DAL.nokernokDAL.addNewComment (Int32 userID, Int32 pageID, заголовок строки, Строковый комментарий) в 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 ]

22 голосов
/ 22 июля 2010

Вы, вероятно, не в той базе данных.Включите исходный каталог в строку подключения:

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

или укажите имя из трех частей:

INSERT INTO myDataBase.dbo.nokernok_kommentarer
            ^^^^^^^^^^
2 голосов
/ 22 июля 2010

Из сообщения об ошибке может показаться, что таблица dbo.nokernok_kommentarer не существует в вашей базе данных или не является таблицей и поэтому не может быть обновлена.

Вы проверили, что:

  • Вы подключаетесь к серверу , который, по вашему мнению, вы подключаетесь?
  • Вы подключаетесь к базе данных , по вашему мнениювы подключаетесь к?
  • Вы указываете правильный каталог (или как он называется в настоящее время =), т.е. вы уверены, что это должен быть dbo., а не somethingElse.?
  • таблица dbo.nokernok_kommentarer существует?

Если вы скопируете SQL из своего кода и запустите его в чем-то вроде SQL Server Management Studio, он будет работать без ошибок там?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...