日期:2014-05-18  浏览次数:20422 次

asp.net使用sql错误 谁帮我检查下
C# code

using System.Configuration;
using System.Data.SqlClient;
namespace SZTZ.BLL
{
    public class Transactions
    {
        public static bool Tran1(SZTZ.Model.HDXXB mhd)//用来素质拓展办公室审核活动时
        {
            
            string connectionString = ConfigurationManager.ConnectionStrings["menu"].ConnectionString;
            string sql1 = "update HDXXB set SHZT=@shzt,SZSHYJ=@szshyj,SZSHSJ=@szshsj where HDBH=@hdbh";
            string sql2 = "";
            
            if(mhd.CYFS==1||mhd.CYFS==4||mhd.CYFS==0)//院级活动,校级直接参加活动
            {
                //为申报单位增加一条发布信息 FBZT 1表示为自己未发布 因为不存在上级发布
                
                sql2 = "insert HDFBB(HDBH,JGBH,FBZT) values(@hdbh,@sbjg,1)";

            }
            if (mhd.CYFS == 2 || mhd.CYFS == 3)//校级逐级活动 是需要逐级发布的
            {
                //不考虑存在院级限制,每个院增加一条信息,
                sql2 = "EXEC hdfb @hdbh,@sbjg";//执行存储过程 hfbb(活动编号,申报单位)
                
            }
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                SqlCommand cmd1 = new SqlCommand();
                cmd1.Connection = con;
                cmd1.CommandText = sql1;
                cmd1.Parameters.AddWithValue("shzt",mhd.SHZT);
                cmd1.Parameters.AddWithValue("szshyj",mhd.SZSHYJ);
                cmd1.Parameters.AddWithValue("szshsj", mhd.SJSHSJ);
                cmd1.Parameters.AddWithValue("hdbh",mhd.HDBH);
                SqlCommand cmd2 = new SqlCommand();
                cmd2.Connection = con;
                cmd2.CommandText = sql2;
                cmd2.Parameters.AddWithValue("hdbh",mhd.HDBH);
                cmd2.Parameters.AddWithValue("sbjg",mhd.SBJG);
                con.Open();
                SqlTransaction tran = con.BeginTransaction();
                cmd1.Transaction = tran;
                cmd2.Transaction = tran;

                try
                {
                    cmd1.ExecuteNonQuery();
                    cmd2.ExecuteNonQuery();
                    tran.Commit();
                    return true;
                }
                catch (System.Exception ex)
                {
                    tran.Rollback();
                    return false;
                }
            }
        }
        public  static bool ss()
        {
            return false;
        }
    }
}




代码如上,确定tran1的传入参数和sql1 sql2 里面的sql语句没问题,谁帮我看看 为啥执行tran1的时候执行的是catch

------解决方案--------------------
catch代码块里面加throw ex;看看抛出什么异常和提示。
------解决方案--------------------
如楼上所说,看异常信息,贴上来
------解决方案--------------------
楼上所说看异常,或者调试一下也能看到异常...把异常信息贴出来
------解决方案--------------------
C# code
cmd1.Parameters.AddWithValue("shzt",mhd.SHZT);
cmd1.Parameters.AddWithValue("szshyj",mhd.SZSHYJ);
cmd1.Parameters.AddWithValue("szshsj", mhd.SJSHSJ);
cmd1.Parameters.AddWithValue("hdbh",mhd.HDBH);
//给变量赋值,你的变量写的不对吧?
cmd1.Parameters.AddWithValue("@shzt",mhd.SHZT);
cmd1.Parameters.AddWithValue("@szshyj",mhd.SZSHYJ);
cmd1.Parameters.AddWithValue("@szshsj", mhd.SJSHSJ);
cmd1.Parameters.AddWithValue("@hdbh",mhd.HDBH);