读书人

想了好几天了存储过程该如何调用

发布时间: 2012-01-19 00:22:28 作者: rapoo

想了好几天了,存储过程该怎么调用
我做了一个存储过程如下:
CREATE PROCEDURE InsertSSDInfoAgreementList
@OperateTime Char(14),
@OperateUse Char(2),
@FeeTelNo VarChar(32),
@RecTelNum int,
@RecTelNo text,
@InfoCode Char(12),
@TailorMode Char(2),
@BeginTime Char(14),
@EndTime Char(14),
@TaskFrom Char(2),
@FeeType Char(2),
@exp1 text,
@exp2 text,
@exp3 text,
@Reserved bigint,
@TelMode smallint,
@LinkID VarChar(50)

AS

Begin

insert into ssdInfoAgreementList(OperateTime,OperateUse,FeeTelNo,RecTelNum,RecTelNo,InfoCode,TailorMode,BeginTime,EndTime,TaskFrom,FeeType,exp1,exp2,exp3,Reserved,TelMode,LinkID)
Values(@OperateTime,@OperateUse,@FeeTelNo,@RecTelNum,@RecTelNo,@InfoCode,@TailorMode,@BeginTime,@EndTime,@TaskFrom,@FeeType,@exp1,@exp2,@exp3,@Reserved,@TelMode,@LinkID)


End
GO
我做的页面上,有个textbox1控件(用来输入信息对应数据表中RecTelNo字段),一个Radiobuttonlist控件(有两项内容用来选择条件信息),一个dropdownlist控件,一个textbox2控件(对应数据表中InfoCode字段),这两个控件已和数据表X1绑定(就是随着dropdownlist控件下拉项目的变化textbox2控件也随着相应变化,这项功能我已编程实现),一个button控件,我现在想实现点击button控件后,将textbox1控件中输入的数据插入到表ssdInfoAgreementList中,ssdInfoAgreementList中的字段是:
列名 数据类型 长度
KeyID bigint 8 主键(序号自动增加)
OperateTime char 14
OperateUse char 2
FeeTelNo varchar 32
RecTelNum int 4
RecTelNo text 16
InfoCode char 12
TailorMode char 2
BeginTime char 14
EndTime char 14
TaskFrom char 2
FeeType char 2
Exp1 text 16
Exp2 text 16
Exp3 text 16
Reserved bigint 8
TelMode smallint 2
LinkID varchar 50
请教大家怎么能调用我的存储过程将我在textbox1控件和textbox2控件中输入的数据写入数据表,谢谢!

[解决办法]
================
抽取 一个类出来 用来执行 带参数的存储过程
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ksClient
{
class DataSql
{
public static string strConn = "Data Source=localhost;Initial Catalog=testManage;Integrated Security=SSPI;Persist Security Info=False ";

public string StrConn
{
get
{
return strConn;


}
}
public static SqlConnection GetConObject()
{
return new SqlConnection(strConn);
}
public static void CreateCommand(SqlCommand cmd, SqlConnection con, SqlTransaction trans, string procName, SqlParameter[] cmdParms)
{
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
cmd.CommandText = procName;
if (trans != null)
{
cmd.Transaction = trans;
}
cmd.CommandType = CommandType.StoredProcedure;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}


public static void ExecuteNonQuery(string procName, SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection con = new SqlConnection(strConn))
{
CreateCommand(cmd, con, null, procName, cmdParms);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();

}
}
public static DataSet ExecuteDataSet(string procName)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = GetConObject();
DataSet ds = new DataSet();

try
{
CreateCommand(cmd, con, null, procName, null);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
cmd.Dispose();
Close(con);
}
}
public static DataSet ExecuteDataSet(string procName, SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection(strConn);
DataSet ds = new DataSet();
try
{
CreateCommand(cmd, con, null, procName, cmdParms);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);

cmd.Parameters.Clear();
return ds;
}
catch (Exception ex)
{

throw ex;
}
finally
{
cmd.Dispose();
Close(con);
}
}
public static DataSet ExecuteDataSetSql(string strSql)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = GetConObject();
DataSet ds = new DataSet();
SqlDataAdapter da = null;

try
{
da = new SqlDataAdapter(strSql, con);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (da != null)
da.Dispose();

cmd.Dispose();
Close(con);


}
}

public static void ExecuteSql2(string strSql)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = GetConObject();
SqlTransaction trans = null;
try
{
if (con.State != ConnectionState.Open)
con.Open();
trans = con.BeginTransaction();
cmd.Connection = trans.Connection;
cmd.Transaction = trans;
cmd.CommandText = strSql;

cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
throw ex;
}
finally
{
cmd.Dispose();
Close(con);
}
}
public static void ExecuteSql(string strSql)
{
SqlCommand cmd = new SqlCommand();
SqlConnection con = GetConObject();

try
{
if (con.State != ConnectionState.Open)
con.Open();

cmd.Connection = con;

cmd.CommandText = strSql;

cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
cmd.Dispose();
Close(con);
}
}
public static void Close(SqlConnection myConn)
{
if ((myConn != null) && (myConn.State == ConnectionState.Open))
{
myConn.Close();
}
}
}
}
============================
定义一个类 用来传递参数
如下的 方法
public void SetStu(string procName,string Name,string Nameen,string Sex,string FEducation,string CardID,string BirDate,int FTech,int group,int subject,string Jif,string JobAddress,string ExamNum,string ServerNum,string ExamDate,string IsExam)
{
SqlParameter[] parms ={

new SqlParameter( "@FName ",SqlDbType.VarChar,30),
new SqlParameter( "@FNameen ",SqlDbType.VarChar,35),
new SqlParameter( "@FSex ",SqlDbType.Char,1),
new SqlParameter( "@FEducation ",SqlDbType.NVarChar,20),
new SqlParameter( "@FCardID ",SqlDbType.Char,18),
new SqlParameter( "@FBirDate ",SqlDbType.DateTime),
new SqlParameter( "@FTech ",SqlDbType.Int),
new SqlParameter( "@FGroup ",SqlDbType.Int),
new SqlParameter( "@FSubject ",SqlDbType.Int),
new SqlParameter( "@FJiF ",SqlDbType.NVarChar,100),
new SqlParameter( "@FJobAdd ",SqlDbType.NVarChar,100),
new SqlParameter( "@FExamNum ",SqlDbType.VarChar,30),
new SqlParameter( "@FServerNum ",SqlDbType.VarChar,30),
new SqlParameter( "@FExamDate ",SqlDbType.DateTime),
new SqlParameter( "@FIsAE ",SqlDbType.Char,1)

};

parms[0].Value = Name;
parms[1].Value = Nameen;
parms[2].Value = Sex;
parms[3].Value = FEducation;
parms[4].Value = CardID;


parms[5].Value = BirDate;
parms[6].Value = FTech;
parms[7].Value = group;
parms[8].Value = subject;
parms[9].Value = Jif;
parms[10].Value = JobAddress;
parms[11].Value = ExamNum;
parms[12].Value = ServerNum;
parms[13].Value = ExamDate;
parms[14].Value = IsExam;


try
{
DataSql.ExecuteNonQuery(procName, parms);
}
catch (Exception ex)
{
throw ex;
}
}
============================在页面中 调用 这个方法 就可以了....将文本框的值 传进去

读书人网 >C#

热点推荐