View Full Version : خطا در اجرا SP
mojtaba_e
دوشنبه 15 شهریور 1389, 23:15 عصر
سلام و خدا قوت به تمامی دوستان
من در یک برنامه می خوام یک SP اجرا کنم که این SP سه ارامتر ورودی و دو پارامتر خروجی داره وقتی که SP داخل برنامه می خوام اجرا کنه Error زیر رو می ده که نمی دونم چیه ؟
اگر لطف کنین ...
String[3]: the Size property has an invalid size of 0.
این خطا تو خط اجرای cmnd.ExecuteNonQuery(); میده
Rejnev
دوشنبه 15 شهریور 1389, 23:19 عصر
در صورت امکان خود SP و یاPrototype اش و متنی که در CommandText برای اجرا می ریزید رو بذارید.
mojtaba_e
سه شنبه 16 شهریور 1389, 02:04 صبح
@UserName nvarchar(50),
@Question nvarchar(50),
@Reply nvarchar(50),
@Password nvarchar(50) output,
@IDUserAccount int output
AS
BEGIN
if Exists(select UserName,Question,Reply from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply)
begin
select @Password=[password] from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply
select @IDUserAccount=ID from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply
end
else
begin
set @IDUserAccount=-1
set @Password =''
end
--------------------------------------------------------------
Function
SqlCommand cmnd = new SqlCommand();
cmnd.Connection = conn;
cmnd.CommandText = "SP_GetMePass";
cmnd.CommandType = CommandType.StoredProcedure;
cmnd.Parameters.AddWithValue("@UserName", strUserName);
cmnd.Parameters.AddWithValue("@Question", strQuestion);
cmnd.Parameters.AddWithValue("@Reply", strPaas);
cmnd.Parameters.Add("@Password",SqlDbType.NVarChar);
cmnd.Parameters.Add("@IDUserAccount",SqlDbType.Int);
cmnd.Parameters["@Password"].Direction=ParameterDirection.Output;
cmnd.Parameters["@IDUserAccount"].Direction=ParameterDirection.Output;
conn.Open();
cmnd.ExecuteNonQuery();
IDUserAccount=int.Parse(cmnd.Parameters["@IDUserAccount"].Value.ToString());
strPaas=cmnd.Parameters["@Password"].Value.ToString();
conn.Close();
linux
پنج شنبه 18 شهریور 1389, 00:06 صبح
یکی به داد ما برسه
آنجایی که پارامتر از نوع nvarchar می سازید باید سایزش را هم اعلام کنید
manij_mhm
پنج شنبه 18 شهریور 1389, 00:42 صبح
سلام.
آنجایی که پارامتر از نوع nvarchar می سازید باید سایزش را هم اعلام کنید
کدوم خط کدش سایزو مشخص نکردن؟ ایشون که فکر کنم همه سایزارو تعیین کرده!
set @Password =''
یه space بذارید ببینید شاید مشکل از این باشه.
mojtaba_e
دوشنبه 22 شهریور 1389, 22:12 عصر
دوستان من جواب نگرفتم
خیلی واجبه لطفا ...
Rejnev
دوشنبه 22 شهریور 1389, 23:09 عصر
من تا بحال با out كار نكردم ولي براي كار راه اندازي فعلا اينطوري عمل كن:
--in sql:
create proc myproc @a nvar...,@b nvar... ,... as
begin
declare @out1 nvar, @out2 int ,...
if ... then @out1=..., ...
select @out1 ,@out 2
end
//in csharp:
cmd_click(...)
{
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=new SqlCommand();
da.SelectCommand.Connection=new SqlConnection(...);
da.SelectCommand.CommandText="Exec myproc '"+txt1.Text+"' ,'"+txt2.Text+"' ,'"+txt3.Text+"' ";
DataTable dt=new Datatable();
da.Fill(dt);
strPass=dt.Rows[0][0].ToString();
str2=dt.Rows[0][1].ToString(); //,...
}
mojtaba_e
سه شنبه 23 شهریور 1389, 00:51 صبح
ایده جالبی بود :تشویق:
ولی یعنی به جای پیدا کردن راحل ، سوال رو پاک کنم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.