在我的代码中,这些查询似乎都没有运行。调试标签打印为“结束”,因此它在该代码块内执行某些操作,只是看起来它不喜欢查询?
// 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";
}
}
几个问题:
答案 0 :(得分:3)
它没有做任何事情的原因是因为你实际上并没有执行查询。你需要做的是:
// Verify that username is unique
using (SqlCommand cmd = new SqlCommand("UPDATE tblSiteSettings SET isActive = 0", cn))
{
cn.Open();
cmd.ExecuteNonQuery();
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();
cmd.ExecuteNonQuery();
cn.Close();
}
这是您遗失的行cmd.ExecuteNoneQuery();
。 Execute
类公开了各种不同的SqlCommand
方法,最常用的是:
答案 1 :(得分:2)
你遗失了
cmd.ExecuteScalar();
您也可以重复使用SqlConnection
,您可以在using (SqlConnection cn = new Sql...
语句后立即打开连接。当SqlConnection
位于使用区块中时,您不必关闭连接,根据the documentation,当您离开using
区块时,连接已关闭。