如何在此代码中使用递归函数? [英] How to recursive function use in this code?

查看:45
本文介绍了如何在此代码中使用递归函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆