如何在此代码中使用递归函数? [英] How to recursive function use in this code?
本文介绍了如何在此代码中使用递归函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
private void SaveMact(string ComboxSelectedValue)
{
if (MessageBox.Show("You are about to save current operation. Do you want to proceed?", "Save Data", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
return;
try
{
using (SqlConnection conn = new SqlConnection(GlobalClass.DataConnectionString))
using (SqlCommand cmdsave = new SqlCommand())
{
conn.Open();
cmdsave.Connection = conn;
foreach (Menuitem mi in oMenuitemlist)
{
if (mi.RowChanged > 0 )
{
cmdsave.CommandText = "UPDATE MENUITEM SET MCAT = @MCAT WHERE MCODE = @MCODE OR PARENT = @MCODE OR MGROUP=@MCODE;
cmdsave.Parameters.AddWithValue(@MCAT, mi.Mcat);
cmdsave.Parameters.AddWithValue(@MCODE, mi.Mcode);
cmdsave.ExecuteNonQuery();
}
}
推荐答案
对数据库使用递归永远不是一个好主意。
构建单个查询以更新更好所有记录而不是递归更新。
Never a good idea to use recursion with the database.
Its better to build a single query to update all records rather than update recursively.
public void ExecuteSave(object obj)
{
SqlTransaction Tran;
if(MessageBox.Show(您即将保存当前操作。你想继续吗?,保存数据;,MessageBoxButton.YesNo,MessageBoxImage.Question)!= MessageBoxResult.Yes)
return;
try
{
使用(SqlConnection Conn = new SqlConnection(GlobalClass.DataConnectionString))
使用(SqlCommand cmd = Conn.CreateCommand())
{
Conn.Open();
Tran = Conn.BeginTransaction();
cmd.Transaction = Tran;
尝试
{
SaveMCAT(oMenuitemlist,cmd);
Tran.Commit();
}
catch(例外)
{
if(Tran.Connection!= null)
Tran.Rollback();
throw;
}
}
}
catch(例外)
{
throw;
}
MessageBox.Show(分类映射成功,警报)
}
private void SaveMCAT(ObservableCollection< menuitem> ;,SubGroup,SqlCommand cmdsave)
{
foreach(子组中的菜单项目)
{
if(mi.RowChanged> 0)
{
cmdsave.CommandText =UPDATE MENUITEM SET MCAT = @MCAT WHERE MCODE = @MCODE OR PARENT = @MCODE OR MGROUP = @ MCODE;
cmdsave.Parameters.AddWithValue(@ MCAT;,mi.Mcat);
cmdsave.Parameters.AddWithValue(@ MCODE,mi.Mcode);
cmdsave.ExecuteNonQuery();
cmdsave.Parameters.Clear();
}
if(IsCheackedNonTree == true)
{
}
else
{
if(mi.Children.Count> 0)
{
SaveMCAT(mi.Children,cmdsave) ;
}
}
}
}
public void ExecuteSave(object obj)
{
SqlTransaction Tran;
if (MessageBox.Show("You are about to save current operation. Do you want to proceed?", "Save Data";, MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
return;
try
{
using (SqlConnection Conn = new SqlConnection(GlobalClass.DataConnectionString))
using (SqlCommand cmd = Conn.CreateCommand())
{
Conn.Open();
Tran = Conn.BeginTransaction();
cmd.Transaction = Tran;
try
{
SaveMCAT(oMenuitemlist, cmd);
Tran.Commit();
}
catch (Exception)
{
if (Tran.Connection != null)
Tran.Rollback();
throw;
}
}
}
catch (Exception)
{
throw;
}
MessageBox.Show("Category Mapped Sucessfully", "Alert")
}
private void SaveMCAT(ObservableCollection<menuitem>, SubGroup, SqlCommand cmdsave)
{
foreach (Menuitem mi in SubGroup)
{
if (mi.RowChanged > 0)
{
cmdsave.CommandText = "UPDATE MENUITEM SET MCAT = @MCAT WHERE MCODE = @MCODE OR PARENT = @MCODE OR MGROUP=@MCODE";
cmdsave.Parameters.AddWithValue(@MCAT;, mi.Mcat);
cmdsave.Parameters.AddWithValue(@MCODE, mi.Mcode);
cmdsave.ExecuteNonQuery();
cmdsave.Parameters.Clear();
}
if (IsCheackedNonTree == true)
{
}
else
{
if (mi.Children.Count> 0)
{
SaveMCAT(mi.Children, cmdsave);
}
}
}
}
这篇关于如何在此代码中使用递归函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文