2 yunchen yuan yunchen_yuan 于 2017.01.03 17:06 提问

.NET怎么连接一次数据库执行多条语句

protected void Button1_Click(object sender, EventArgs e)
{
string SqlStr = ConfigurationManager.ConnectionStrings["conn"].ToString();

SqlConnection conn = new SqlConnection(SqlStr);

conn.Open();
string sql3 = "select 编号 from CS where 编号 = '" + TextBox1.Text.Trim() + "'";
SqlCommand cmd3 = new SqlCommand(sql3, conn);
cmd3.CommandText = sql3;
cmd3.Connection = conn;
try
{
string BH = cmd3.ExecuteScalar().ToString();
string sql2 = "update CS set 数量 = 数量+1 where 编号 = " + TextBox1.Text.Trim();
SqlCommand cmd2 = new SqlCommand(sql2, conn);

        Response.Write("<script>alert('插入成功')</script>");
    }
    catch
    {
        string sql1 = "insert into CS (编号,索书号,书名,作者,数量) values (";
        sql1 += "'" + TextBox1.Text.Trim() + "','" + TextBox2.Text.Trim() + "','" + TextBox3.Text.Trim() +
            "','" + TextBox4.Text.Trim() + "','" + "1" + "')";
        SqlCommand cmd1 = new SqlCommand(sql1, conn);
        Response.Write("<script>alert('插入成功')</script>");
    }

    conn.Close();

}

第一条语句执行没问题,后面两条语句不报错但没有结果,我的是SQL数据库

2个回答

Ma_shuhua
Ma_shuhua   2017.01.03 17:18
已采纳

SqlCommand cmd = new SqlCommand(sql, conn);
你应该要在这一句后面加上 cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery()才是cmd的执行,你现在只是赋值,并没有执行cmd语句

yunchen_yuan
yunchen_yuan 确实是这个问题,感谢
12 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.01.03 17:17

如果你第一条语句执行没有报异常,就不会执行后两条。一种可能出现的异常是,你没有查询到编号,那么进入catch。
如果都要执行,不要写在catch里。

caozhy
caozhy 回复yunchen_yuan: 另外你cmd1和cmd2没有执行。加上 cmd1.ExecuteScalar(); 和 cmd2.ExecuteScular();
12 个月之前 回复
yunchen_yuan
yunchen_yuan 感谢回答,问题找到了,少写了一句返回执行行数的语句,结果没有被执行
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!