stored procedure
Merhaba
C# la yazdığım programda veritabanına ekleme yapabilmek için stored procedure oluşturmaya çalışıyorum. Amacım bir procedure içinde bütün ekleme olayını tamamlamak ve C#'tan çağırmak. Aşağıdaki şekilde yazdığımda çalıştıramıyorum.Başka yöntemleri denediğimde de her seferinde yalnızca ilk sütuna ekleme yapılabiliyor. Else'ten sonrasını görmüyor. Bunu nasıl çözebilirim?
use env
go
create proc [SP$insert](
@p1 nvarchar(100),
@p2 nvarchar(100),
@id int output,
@debug bit = 0
)
as
begin
set nocount on
begin try
if @p2='Kullanıcı Adı'
begin
INSERT INTO env.dbo.Base(u_name) VALUES (@p1)
SELECT @id = @@IDENTITY
end
else if @p2='Serial Number'
begin
INSERT INTO env.dbo.Base(ser_num) VALUES (@p1)
SELECT @id= @@IDENTITY
end
end try
begin catch
if @debug = 1
throw;
end catch
set nocount off
end
go
C#:
try
{
cmd.CommandText = "SP$insert";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@p1", textBox1.Text));
cmd.Parameters.Add(new SqlParameter("@p2", f1.textBox1.Text));
cmd.Parameters.Add(new SqlParameter("@sira_no", SqlDbType.Int)).Direction = ParameterDirection.Output;
cmd.Connection = baglan;
baglan.Open();
cmd.ExecuteNonQuery();
baglan.Close();
MessageBox.Show("Inserted!");
}
catch (Exception)
{
MessageBox.Show("Not Inserted!");
throw;
}
finally
sorguda @sira_no diye bir parametre göremiyorum. Ama command ın içine output olarak verilmiş. sanırsam @id olması gerekiyor. Yanılıyor muyum?
Rserit şunu dedi: Merhaba. Else'den sonra nasıl bir hata veriyor? |
Caner şunu dedi: sorguda @sira_no diye bir parametre göremiyorum. Ama command ın içine output olarak verilmiş. sanırsam @id olması gerekiyor. Yanılıyor muyum? |
sira_no'yu normalde id olarak değiştirmiştim.Kopyalamada düzeltmeyi unutmuşum.O konuda bir sıkıntı yok.
zaten bir sütuna insert yapılıyor. ya u_name ya da ser_num. Ama sorununuz sernum ve uname i aynı anda aynı satıra yazmak istiyorsanız. o farklı. Şu an yazdığınız koddan bu anlaşılıyor
Caner şunu dedi: zaten bir sütuna insert yapılıyor. ya u_name ya da ser_num. Ama sorununuz sernum ve uname i aynı anda aynı satıra yazmak istiyorsanız. o farklı. Şu an yazdığınız koddan bu anlaşılıyor |
Listbox'tan seçtiğim herhangi bir sütuna ekleme yapmak istiyorum.25 tane sütunum var ve bütün ekleme işlemleri için yalnız bir SP kullanmak istiyorum. Bu yüzden if else kullanmak zorundayım ama bu şekilde hiçbir veri eklenmiyor. Herbir sütun için ayrı ayrı SP yazıp, C# tan if else kullanarak çağırdığımda yine çalışmıyor. Velhasıl yalnızca tek sütun üzerinde işlem yaptığımda başarılı oluyorum.
ceylan şunu dedi:
Listbox'tan seçtiğim herhangi bir sütuna ekleme yapmak istiyorum.25 tane sütunum var ve bütün ekleme işlemleri için yalnız bir SP kullanmak istiyorum. Bu yüzden if else kullanmak zorundayım ama bu şekilde hiçbir veri eklenmiyor. Herbir sütun için ayrı ayrı SP yazıp, C# tan if else kullanarak çağırdığımda yine çalışmıyor. Velhasıl yalnızca tek sütun üzerinde işlem yaptığımda başarılı oluyorum. |
1-) switch case yapısını denediniz mi? 2-) eğer form üzerinde tuttuğunuz bir tablonuz varsa ve o tabloda işlem yapmak istiyorsanız. DataGridView öneririm. Böylelikle her seferinde insert yapmanıza gerek kalmaz. 3-) bu karar ver işini C# da yapmanızı öneririm. Hata takibi daha kolay olur. Visual Studio kullanıyorsanız break point ile gelen - giden değerleri kontrol ederek daha hızlı ilerlersiniz.