Вставка базы данных C # (ASP.NET) - ExecuteNonQuery: свойство CommandText не было инициализировано - PullRequest
2 голосов
/ 30 апреля 2011

в первый раз я делаю вставку из ASP.NET/C# и у меня небольшая проблема.Я продолжаю получать следующую ошибку каждый раз, когда запускается этот код: «ExecuteNonQuery: свойство CommandText не было инициализировано» Кто-нибудь знает, что это значит и как я могу это исправить?

Заранее спасибо!

string sqlQuery = "INSERT INTO ATI_LOG_IO (Date, Connect_Time, Disconnect_Time, ATI_Rep, Reason_For_Access, Property_Contact, Case_Number, Comments, Property_ID)";
sqlQuery += "VALUES (@Today, @Connect, @Disconnect, @Rep, @Reason, @Contact, @CaseNum, @Comments, @PropertyID)";
using (SqlConnection dataConnection = new SqlConnection(connectionString))
{
    using (SqlCommand dataCommand = dataConnection.CreateCommand())
    {
        dataConnection.Open();
        dataCommand.CommandType = CommandType.Text;
        dataCommand.CommandText = sqlQuery;
        dataCommand.Parameters.Add("@Today", DateTime.Today.ToString());
        dataCommand.Parameters.Add("@Connect", txtInDate.Text + " " + fromHrs.Text + ":" + fromMins.Text + ":00");
        dataCommand.Parameters.Add("@Disconnect", txtOutdate.Text + " " + toHrs.Text + ":" + fromMins.Text + ":00");
        dataCommand.Parameters.Add("@Rep", repID);
        dataCommand.Parameters.Add("@Reason", txtReason.Text);
        dataCommand.Parameters.Add("@Contact", txtContact.Text);
        dataCommand.Parameters.Add("@CaseNum", txtCaseNum.Text);
        dataCommand.Parameters.Add("@Comments", txtComments.Text);
        dataCommand.Parameters.Add("@PropertyID", lstProperties.SelectedValue);
        dataCommand.ExecuteNonQuery();
        dataConnection.Close();
    }
}

Ответы [ 3 ]

6 голосов
/ 30 апреля 2011
string sqlQuery = "INSERT INTO ATI_LOG_IO (Date, Connect_Time, Disconnect_Time, ATI_Rep, Reason_For_Access, Property_Contact, Case_Number, Comments, Property_ID)";
sqlQuery += " VALUES (@Today, @Connect, @Disconnect, @Rep, @Reason, @Contact, @CaseNum, @Comments, @PropertyID)";
using (SqlConnection dataConnection = new SqlConnection(connectionString))
{
    using (SqlCommand dataCommand = new SqlCommand(sqlQuery, dataConnection))
    {
        dataCommand.Parameters.AddWithValue("Today", DateTime.Today.ToString());
        dataCommand.Parameters.AddWithValue("Connect", txtInDate.Text + " " + fromHrs.Text + ":" + fromMins.Text + ":00");
        dataCommand.Parameters.AddWithValue("Disconnect", txtOutdate.Text + " " + toHrs.Text + ":" + fromMins.Text + ":00");
        dataCommand.Parameters.AddWithValue("Rep", repID);
        dataCommand.Parameters.AddWithValue("Reason", txtReason.Text);
        dataCommand.Parameters.AddWithValue("Contact", txtContact.Text);
        dataCommand.Parameters.AddWithValue("CaseNum", txtCaseNum.Text);
        dataCommand.Parameters.AddWithValue("Comments", txtComments.Text);
        dataCommand.Parameters.AddWithValue("PropertyID", lstProperties.SelectedValue);

        dataConnection.Open();
        dataCommand.ExecuteNonQuery();
        dataConnection.Close();
    }
}

Копирование-вставка должны помочь

1 голос
/ 30 апреля 2011

Глядя на ваш строковый SQL-запрос, вы не оставляете пробел между частью "INTO" и частью "VALUES".

...............Property_ID)";
sqlQuery += "VALUES (@Today, ..............

ДОЛЖНО БЫТЬ:

...............Property_ID)";
sqlQuery += " VALUES (@Today, ..............
1 голос
/ 30 апреля 2011

Обычно это означает, что вы не установили свойство CommandText, но в вашем случае это так.

Вы должны попробовать проверить, что строка sqlQuery на самом деле не пуста в этой строке:

dataCommand.CommandText = sqlQuery;

PS В качестве "наилучшей практики" вы можете рассмотреть возможность открытия соединения ПОСЛЕ настройки объекта SqlCommand, чтобы минимизировать время, затрачиваемое на открытое соединение:

    dataCommand.CommandType = CommandType.Text;
    dataCommand.CommandText = sqlQuery;
    dataCommand.Parameters.Add("@Today", DateTime.Today.ToString());
    //...
    dataConnection.Open();
    dataCommand.ExecuteNonQuery();
    dataConnection.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...