ここに私のストアドプロシージャがあります:
ALTER proc [dbo].[allrecp]
@peid int=0,
@pename varchar(20)='',
@pdes varchar(20)='',
@pdoj date='1111-1-1',
@sal money=0,
@dept int=0,
@loc int=0,@i int=0
as begin
if(@i=1)
begin
insert into Employee values(@pename,@pdes,@pdoj,@sal,@dept,@loc)
end
if(@i=2)
begin
update Employee set ENAME=@pename,DESEGNATION=@pdes,DOJ=@pdoj,SALARY=@sal,DEPTID=@dept,LOCATIONID=@loc WHERE EMPID=@peid
end
if(@i=3)
delete EMPLOYEE where EMPID=@peid
end
そして私のC#コードは次のとおりです。
private void btndelete_Click(object sender, EventArgs e)
{
parameteres(3);
}
private void btnupdate_Click(object sender, EventArgs e)
{
parameteres(2);
}
private void BTNINSERT_Click(object sender, EventArgs e)
{
parameteres(1);
}
public void parameteres(int i)
{
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "allrecp";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@peid", SqlDbType.Int)).Value = txtempid.Text;
cmd.Parameters.Add(new SqlParameter("@pename", SqlDbType.VarChar, 20)).Value = txtename.Text;
cmd.Parameters.Add(new SqlParameter("@pdes", SqlDbType.VarChar, 20)).Value = txtdesg.Text;
cmd.Parameters.Add(new SqlParameter("@pdoj", SqlDbType.Date)).Value = txtdoj.Text;
ここで私は問題に直面しています:
パラメータ値を String から DateTime に変換できませんでした
コード:
cmd.Parameters.Add(new SqlParameter("@dept", SqlDbType.Int)).Value = txtdept.Text;
cmd.Parameters.Add(new SqlParameter("@sal", SqlDbType.Money)).Value = txtsal.Text;
cmd.Parameters.Add(new SqlParameter("@loc", SqlDbType.Int)).Value = txtlocation.Text;
cmd.Parameters.Add(new SqlParameter("@i", SqlDbType.Int)).Value = i;
con.Open();
int x = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(x + " rows effected");
ここで私は問題に直面しています:
cmd.Parameters.Add(new SqlParameter("@dept", SqlDbType.Int)).Value = txtdept.Text;
デフォルト値をストアドプロシージャに渡す方法は?