PDA

View Full Version : سوال: نحوه کار کردن با store procedure در #C



hessam2003
سه شنبه 24 بهمن 1391, 20:14 عصر
نحوه کار کردن با store procedure در #C


سلام.
خیلی ممنون از زحمتتون و وقتی که میذارید.
من کد شما رو استفاده کردم اما بهم این پیغام خطا میده.
http://pajoheshgar.persiangig.com/pic.jpg
اینم کد داخلی VS
SqlConnection cnn = new SqlConnection("Data Source=HESSAM;Initial Catalog=Phone_book;Integrated Security=True");
private void button1_Click(object sender, EventArgs e)
{
try
{

SqlCommand comm = new SqlCommand("Phone_book_Account_insert", cnn);
comm.CommandType = CommandType.StoredProcedure;
// comm.CommandText = "نام رویه ذخیره شده";
comm.Parameters.AddWithValue("@Account_srl", 1);

if (textBox1.Text == "") throw new Exception("کد کاربری را وارد نکرده اید");
else
comm.Parameters.AddWithValue("@Account_id", int.Parse(textBox1.Text));

comm.Parameters.AddWithValue("@Account_name", textBox2.Text);
comm.Parameters.AddWithValue("@Account_lname", textBox3.Text);
comm.Parameters.AddWithValue("@Account_company", textBox4.Text);
comm.Parameters.AddWithValue("@Account_phone", textBox5.Text);
comm.Parameters.AddWithValue("@Account_cell_phone" , textBox6.Text);
comm.Parameters.AddWithValue("@Account_email", textBox7.Text);
comm.Parameters.AddWithValue("@Account_address", textBox8.Text);
comm.Parameters.AddWithValue("@Account_command", textBox9.Text);
SqlParameter err = new SqlParameter();
err.Direction = ParameterDirection.Output;
err = comm.Parameters.Add("@err", SqlDbType.NVarChar);
cnn.Open();
comm.ExecuteNonQuery();
cnn.Close();
string error = err.Value.ToString();
MessageBox.Show(error.ToString());
SqlDataAdapter da = new SqlDataAdapter("select * from Phone_book_account", cnn);
DataSet ds = new DataSet();
da.Fill(ds, "phone");
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}
finally
{
cnn.Close();
}
اینم کد داخل Procedure SQL
ضمیمه 99924 (http://barnamenevis.org/attachment.php?attachmentid=99924)

create Procedure Phone_book_Account_insert
@Account_srl bigint,
@Account_id bigint,
@Account_name nvarchar(20),
@Account_lname nvarchar(20),
@Account_company nvarchar(30),
@Account_phone char(12),
@Account_cell_phone char(12),
@Account_email nchar(30),
@Account_address nvarchar(50),
@Account_command nvarchar(50),
@err nvarchar(200) output
AS
if exists (select Account_srl from Phone_book_Account
where Account_id=@Account_id)
begin
set @err='کاربر قبلا ثبت شده است!'
return
end
insert into Phone_book_Account(Account_id,Account_name,Account _lname,Account_company,Account_phone,
Account_cell_phone,Account_email,Account_address,A ccount_command) values (
@Account_id,@Account_name,@Account_lname,@Account_ company,@Account_phone,@Account_cell_phone,
@Account_email,@Account_address,@Account_command)

این کد اجرا در SQL
declare @err nvarchar(200)
exec Phone_book_Account_insert 10052,6,'ali','reza','','','','','','',@err output
select @err
select * from Phone_book_Account

uthman
چهارشنبه 28 فروردین 1392, 22:14 عصر
salam .age mishe dar morede ayjade shart dar stored procedure yekam tozih bedid

veniz2008
چهارشنبه 28 فروردین 1392, 23:20 عصر
سلام.
پست اول که آدم سردرد میگیره بهش نگاه میکنه. این تگ شارپ ( #) رو برای این گذاشتن که کدهامونو داخلش بذاریم.
به جای اینکه چندین خط کد بذارید، بهتر نبود 2 خط درباره مشکلتون توصیح بدید. اینکه چی میخواید؟ و هدفتون از نوشتن این sp چیه؟
خطا هم داره میگه که sp شما انتظار پارامتر err@ رو داره ولی واسش فرستاده نشده.
پست 2 : لطفا فارسی تایپ کنید و دقیق بگید چی مدنظرتون هست تا یه مثال واستون بزنم.