[英]Data Access Layer
我創建了DataAccessLayer.cs文件,該文件可幫助我與數據庫建立連接以將記錄插入數據庫中,並且創建了存儲過程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
public class DataAccessLayer
{
SqlConnection con = new SqlConnection("Connection String");
SqlCommand cmd;
public DataAccessLayer()
{
//
// TODO: Add constructor logic here
//
}
public int ExecuteProcedure(String procname, SqlParameter[]param)
{
cmd = new SqlCommand();
cmd.CommandText = procname;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
foreach (SqlParameter obj in param)
{
cmd.Parameters.Add(obj);
}
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
}
使用存儲過程將記錄插入數據庫的代碼
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@Name",txtFirstName.Text),
new SqlParameter("@DOB",txtDOB.Text),
new SqlParameter("@Address",txtAddress.Text),
new SqlParameter("@CN",ddlCountry.SelectedValue),
new SqlParameter("@SN",ddlState.SelectedValue),
new SqlParameter("CNN",ddlCity.SelectedValue),
new SqlParameter("@Mobile",txtMobile.Text),
new SqlParameter("@Email",txtEmail.Text),
new SqlParameter("@Pincode",txtPincode.Text),
new SqlParameter("@returnval",SqlDbType.Int)
};
int i = DAL.ExecuteProcedure("AddContactInfo", param);
if (i == 1)
{
lblError.Text = "Sucess";
}
else
{
lblError.Text = "Not Sucess";
}
插入記錄的存儲過程
ALTER proc [dbo].[AddContactInfo]
(
@Name varchar(50),
@DOB datetime,
@Address Varchar(max),
@Mobile varchar(15),
@Email varchar(50),
@CN int,
@SN int,
@CNN int,
@Pincode int,
@returnval int output
)
As
Begin
if exists(select Id from Contact_Info where Email=@Email)
begin
set @returnval=-2;
return @returnval;
end
else
begin
insert into Contact_Info(Name,DOB,Address,CountryName,StateName,CityName,Pincode,Mobile,Email,CreatedOn )
values(@Name,@DOB,@Address,@CN,@SN,@CNN,@Pincode,@Mobile,@Email,GETDATE())
if @@ERROR<>0
begin
set @returnval=-3;
return @returnval;
end
else
begin
set @returnval=1;
return @returnval;
end
end
End
但是我遇到了“程序或函數'AddContactInfo'期望參數'@returnval',但未提供”的錯誤。”
您必須將new SqlParameter("@returnval", SqlDbType.Int)
設置為output
參數:
foreach (SqlParameter obj in param)
{
if (cmd.ParameterName == "@returnval")
{
cmd.Direction = ParameterDirection.Output
}
cmd.Parameters.Add(obj);
}
當然,這希望所有SP在適當的時候都具有相同的@returnval
。 創建參數列表時最好進行設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.