В моем коде ни один из этих запросов не работает. Отладочная метка печатается как «конец», поэтому она выполняет что-то внутри этого блока кода, просто кажется, что ей не нравятся запросы?ASP.net Почему эти запросы не выполняются?
// Check input is all valid
if (Page.IsValid)
{
debug.Text = "begin";
using (SqlConnection cn = new SqlConnection(
ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()))
{
// Verify that username is unique
using (SqlCommand cmd = new SqlCommand(
"UPDATE tblSiteSettings SET isActive = 0", cn))
{
cn.Open();
cn.Close();
}
using (SqlCommand cmd = new SqlCommand(
"INSERT INTO tblSiteSettings (allowProductRatings, allowComments, " +
"siteName, settingDate, isActive) VALUES (@allowRatings, " +
"@allowcomments, @siteName, getDate(), 1)", cn))
{
cmd.Parameters.Add("@allowRatings", SqlDbType.Bit).Value = 1;
cmd.Parameters.Add("@allowcomments", SqlDbType.Bit).Value = 1;
cmd.Parameters.Add("@siteName", SqlDbType.VarChar, 128).Value = "lol";
cn.Open();
cn.Close();
}
debug.Text = "end";
}
}
Несколько вопросов:
- Почему они не выполняет?
- В классическом ASP для вставок, обновлений и удалений я бы использовал con.Execute (query), как предполагается, для использования набора записей, могу ли я правильно запустить инструкцию по обновлению здесь?
- Является ли мой дизайн запросов хорошим, или я должен выполнять их по-другому?
Спасибо, в чем разница между ExecuteNonQuery и ExecureScalar, как предложено в другом ответе? –
@Tom - я только что расширил это примерно за 10 секунд назад для вас =) вместе с соответствующими ссылками MSDN, чтобы сохранить ответ на копирование и вставку MSDN, чтобы вы могли получить полную информацию там =) – Rob
ExecuteScalar is используется для возврата отдельных значений из SELECT в качестве объекта. ExecuteNonQuery возвращает int для обозначения строк Affected. Все объяснено в ссылках ... –