PDA

View Full Version : سوال: مشکل در اجرای پروسیجر در asp



manit44
شنبه 29 شهریور 1393, 00:18 صبح
سلام بر دوستان عزیز

من یه پروسیجر نوشتم که وقتی این پروسیجر رو داخل سی شارپ صدا میزنم هیچ دیتایی داخل دیتابیس ثبت نمیکنه چکار باید بکنم. در ضمن اسم پروسیجرم sp_customer هست.

پروسیجر:

USE [testDB]GO
/****** Object: StoredProcedure [dbo].[sp_customer] Script Date: 2014-09-19 11:50:09 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_customer]
-- Add the parameters for the stored procedure here
@id int
AS
BEGIN
insert into tbl_customer(omoor_id,cname,cfamily,caddress)
select oid,name,family,address
from tbl_omoor
where oid=@id
END

کد سی شارپ:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=testDB;Integrated Security=True"); con.Open();
SqlCommand cmd = new SqlCommand("sp_customer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("id", txt_omoor_id.Text);
cmd.ExecuteNonQuery();
con.Close();
Label4.Text = "اطلاعات با موفقیت ثبت شد";
GridView1.DataBind();

اینم تصویر طراحی فرمم:

123678


پیشاپیش ممنون از کمک دوستان.

mamad_za
شنبه 29 شهریور 1393, 09:06 صبح
دوست عزیز شما می خواید تو این فیلدا اطلاعات وارد کنید omoor_id,cname,cfamily,caddress
اما شما تو کدتون چیزی برای اینکه این اطاعات رو از کجا بخونه ندارید
این یه نمونست
ALTER PROCEDURE [dbo].[insert_user]
@username NVARCHAR(20),
@pass NVARCHAR(50),
@email NVARCHAR(30),
@n_gallery NVARCHAR(20),
@a_gallery NVARCHAR(20),
@fname NVARCHAR(20),
@lname NVARCHAR(20),
@tel NVARCHAR(20),
@city NVARCHAR(20)

AS
BEGIN

SET NOCOUNT ON;
IF EXISTS(SELECT user_id FROM user_reg WHERE user_name=@username)
BEGIN
SELECT -1 --UserName Exists.
END
ELSE IF EXISTS(SELECT user_id FROM user_reg WHERE email=@email)
BEGIN
SELECT -2 --Email Exists.
END
ELSE
BEGIN
INSERT INTO [user_reg]
([user_name],
[pass],
[email],
[n_gallery],
[a_gallery],
[fname],
[lname],
[tel],
[city])
VALUES
(@username,
@pass,
@email,
@n_gallery,
@a_gallery,
@fname,
@lname,
@tel,
@city)
SELECT SCOPE_IDENTITY() -- UserId

END

END

mohammad reza beizavi
شنبه 29 شهریور 1393, 11:05 صبح
دوست عزیز شما می خواید تو این فیلدا اطلاعات وارد کنید omoor_id,cname,cfamily,caddress
اما شما تو کدتون چیزی برای اینکه این اطاعات رو از کجا بخونه ندارید
این یه نمونست
[/CSHARP]
درود بر شما
اگر به کد ارسالی توجه کنید کافیه که به ازای id پاس داده شده به sp، مقادیر در جدولی که از اون select گرفته وجود داشته باشه
پس الزامی به پاس دادن تمام مقادیر نیست. فقط چک کنید که به ازای id مذکور در جدول omoor اطلاعات باشه

mamad_za
شنبه 29 شهریور 1393, 11:21 صبح
درود بر شما
اگر به کد ارسالی توجه کنید کافیه که به ازای id پاس داده شده به sp، مقادیر در جدولی که از اون select گرفته وجود داشته باشه
پس الزامی به پاس دادن تمام مقادیر نیست. فقط چک کنید که به ازای id مذکور در جدول omoor اطلاعات باشه

یه سوالی برام ایجاد شد تو قسمت اول کد ایشون ، در واقع دارن عمل insert رو انجام می دن ، فقط با id میشه مگه عمل insert رو انجام داد؟

mohammad reza beizavi
شنبه 29 شهریور 1393, 11:25 صبح
بله
یه نگاه به ساختار Insert into select بندازید متوجه عرض بنده میشید.
اینم لینک نمونه:
http://www.w3schools.com/sql/sql_insert_into_select.asp

mamad_za
شنبه 29 شهریور 1393, 11:32 صبح
بله
یه نگاه به ساختار Insert into select بندازید متوجه عرض بنده میشید.
اینم لینک نمونه:
http://www.w3schools.com/sql/sql_insert_into_select.asp
حرف شما در مورد پارامتر id صحیح هستش در اون شکی نیست اما خب الان ما چطوری می خوایم اطلاعاتی رو که می خوایم insert کنیم رو پاس بدیم ؟ دقیق متوجه نشدم

fakhravari
شنبه 29 شهریور 1393, 11:35 صبح
Add("@ID"
:متفکر:

mamad_za
شنبه 29 شهریور 1393, 11:36 صبح
فک کنم منظورتون رو متوجه شدم

mohammad reza beizavi
شنبه 29 شهریور 1393, 11:37 صبح
خب ایشون می خواد توی جدول tbl_customer فیلدهای متناظر از جدول tbl_omoor رو درج کنند. پس با select این مقادیر به دست میاد و با insert into داخل جدول tbl_customer ثبت میشه.
الان روشنتر بود؟

mohammad reza beizavi
شنبه 29 شهریور 1393, 11:43 صبح
Add("@ID"
:متفکر:
جناب fakhravari متوجه این مورد نشدم، این چیه؟؟؟

fakhravari
شنبه 29 شهریور 1393, 13:11 عصر
جناب fakhravari متوجه این مورد نشدم، این چیه؟؟؟

cmd.Parameters.AddWithValue("@id", txt_omoor_id.Text);

mohammad reza beizavi
شنبه 29 شهریور 1393, 14:20 عصر
cmd.Parameters.AddWithValue("@id", txt_omoor_id.Text);
دوستان این مورد هم چک کنید به ویژه جناب manit44

manit44
شنبه 29 شهریور 1393, 16:30 عصر
سلام

ممنون از تمامی دوستانی که راهنمایی کردند

من کد پروسیجرم رو به شکل زیر تغییر دادم و فکر میکنم درسته ولی دوباره هیچ دیتایی رو داخل دیتا بیس درج نمیکنه

پروسیجر:

USE [testDB]
GO
/****** Object: StoredProcedure [dbo].[sp_insert] Script Date: 2014-09-20 4:04:21 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_insert]
@id int,
@name nvarchar(50),
@family nvarchar(50),
@address nvarchar(200)
AS
BEGIN
insert into Customer(id,cname,cfamily,caddress)
select *
from Omoor
where id=@id and oname=@name and ofamily=@family and oaddress=@address

END



کد سی شارپ:

con.Open();
SqlCommand cmd = new SqlCommand("sp_insert",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", txtName.Text);
cmd.Parameters.AddWithValue("@family", txtFamily.Text);
cmd.Parameters.AddWithValue("@address", txtAddress.Text);
cmd.Parameters.AddWithValue("@id", txtOmoorID.Text);
cmd.ExecuteNonQuery();
con.Close();
Label1.Text = "اطلاعات با موفقیت ثبت شد";
GridView1.DataBind();

Majid&Masoud
شنبه 29 شهریور 1393, 20:45 عصر
فیلد ID که تو جدول Customer تعریف کردید رو Identity ست کردید؟
اگه اینطوره نباید SELECT * بزنید
باید هنگام درج همه فیلدها بجز ID رو بهش پاس بدید

ALTER PROCEDURE [dbo].[sp_customer]
-- Add the parameters for the stored procedure here
@id int

AS
BEGIN
insert into tbl_customer(cname,cfamily,caddress)

select name,family,address

from tbl_omoor

where oid=@id
END


[/SQL]

یا اگه میخواید هیمن پروسیجری که نوشتید رو تغییر ندید و اطلاعات جدول امور رو با همون ID هایی که دارند به جدول Customer انتقال بدید باید Auto Increment ستون ID رو تو جدول Customer بردارید