当前位置:编程学习 > C#/ASP.NET >>

ASP.NET调用存储过程

我要做一个报名系统,客户端按提交后就调用存储过程,向SQL数据库插入姓名和学号.存储过程和ASP.NET(C#)调用的代码要怎么写?

我对存储过程不是很了解.有去查过工具书,但是所有工具书都不适合初学者用,看了还是不懂.

希望大家帮帮忙,看书研究几天了,都不懂.

最好代码有解释,不然只有代码我会不理解.写得好我会加分的.

追问:配合工具书来看算明白了,那我要判断调用存储过程是否插入成功,要怎么做?直接用TRY来实现吗?
答案://调用存储过程

public static int CA10( string a1, string a2)
        {
            SqlParameter[] sp =
                {
                    
                    new SqlParameter("@a1",a1),),//存储过程的每个参数

                    new SqlParameter("@a2",a2)
                };
            return SqlHelper.ExeProc("pro_test", sp); //proc_test 为存储过程名
        }       

 //执行带参数的存储过程
        public static int ExeProc(string procName, SqlParameter[] sp)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = SqlHelper.Conn;
            cmd.CommandText = procName;
            cmd.CommandType = CommandType.StoredProcedure;
            if (sp != null)
            {
                cmd.Parameters.AddRange(sp);
            }
            cmd.Connection.Open();
            SqlTransaction tran = cmd.Connection.BeginTransaction();
            cmd.Transaction = tran;
            int a=0; //执行结果 1 为成功 更新了一条数据
            try
            {
                a=cmd.ExecuteNonQuery();
                tran.Commit();
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw ex;
            }
            finally
            {
                cmd.Connection.Close();
            }
            return a;
        }
//自己看看

给你看下我的,用的时候很简单,和你拼sql差别不是很大,就一个属性而已

Commandtype这个属性storeprocedure就是调用存储过程,text是sql语句,

我的sqlhelper.ExecuteNonQuery的参数,

 public static int ExecuteNonQuery(string cmmdText, CommandType cmdType, params SqlParameter[] parameters)
        {
            using (SqlConnection con = new SqlConnection(conString))
            {
                con.Open();
                SqlCommand cmd = PrepareCommand(con, cmmdText, cmdType, parameters);
                return cmd.ExecuteNonQuery();
            }
        }

最后一个是参数,如果你的存储过程有参数,就在这里加,eg:

SqlHelper.ExecuteNonQuery("过程名", CommandType.StoredProcedure,new SqlParameter("参数名字",值));

如果没有参数,则

SqlHelper.ExecuteNonQuery("过程名", CommandType.StoredProcedure, null);

 

 

不懂的话请继续说,谢谢采纳

 

 DbDataReader dr = m_DbHelper.ExecuteReader(CommandType.StoredProcedure, m_DbHelper.Prefix + "GetItemList", par);
            model.RecordCount = (int)m_DbHelper.ExecuteScalar(CommandType.StoredProcedure, m_DbHelper.Prefix + "GetItemCount",
                m_DbHelper.MakeInParam("@Tables", DbType.String, 50, model.TableName),
                m_DbHelper.MakeInParam("@PrimaryKey", DbType.String, 50, model.PrimaryKey),
                m_DbHelper.MakeInParam("@Condition", DbType.String, 3000, model.Condition));

“客户端按提交后就调用存储过程,向SQL数据库插入姓名和学号” 你这个用存储过程是不是太浪费了,直接在C#里拼SQL语句吧。在C#里调存储过程就设置SqlCommand的CommandType为Proc

上一个:asp.net 表单验证
下一个:ASP.NET超链接传值

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,