C#如果文件夹已存在,则将数字提高1

时间:2017-11-28 11:28:32

标签: c# sql .net

当我点击一个按钮时,它会创建一个名为“新类别”的新文件夹。当我再次按下按钮时,我希望它创建一个文件夹'new category(1)',依此类推。它与您在电脑上创建新文件夹时的系统相同。这就是我现在所拥有的,但是当然这会使新类别(1)一遍又一遍。有人知道如何检查它是否存在,如果是这样,例如将1改为2。 THX!

        con = new SqlDbConnect();
        con.SqlQuery("SELECT * FROM categorie WHERE CAT_titel=@cattitel");
        con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie");
        if (con.QueryEx().Rows.Count > 0)
        {
            con = new SqlDbConnect();
            con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
            con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie (1)");
            con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
            con.NonQueryEx();
        }
        else
        {
            con = new SqlDbConnect();
            con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
            con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie");
            con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
            con.NonQueryEx();
        }

4 个答案:

答案 0 :(得分:1)

获取以您要插入的标题开头的所有标记。然后遍历标题并检查名称是否已被采用。如果是添加索引并再次检查...

    con = new SqlDbConnect();
    con.SqlQuery("SELECT CAT_titel FROM categorie WHERE CAT_titel like @cattitel + '%'");
    con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie");
    string titel = "Nieuwe categorie";
    var res = con.QueryEx()
    if (res.Rows.Count > 0)
    {
        int idx = 1;
        while(res.Select(string.Format("CAT_titel = '{0} ({1})'", titel, idx)).Length >0)
        {
            idx++;
        }
        titel = String.Format("{0} ({1})", titel, idx);
    }

    con = new SqlDbConnect();
    con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
    con._cmd.Parameters.AddWithValue("@cattitel", titel);
    con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
    con.NonQueryEx();

答案 1 :(得分:0)

你可以试试这个。使用like可以计算现有文件夹。

con = new SqlDbConnect();
con.SqlQuery("SELECT * FROM categorie WHERE CAT_titel like @cattitel + '%' ");
con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie");
int rc = con.QueryEx().Rows.Count;

if (rc > 0)
{
    con = new SqlDbConnect();
    con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
    con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie (" + (rc++).ToString() + ")");
    con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
    con.NonQueryEx();
}
else
{
    con = new SqlDbConnect();
    con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
    con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie");
    con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
    con.NonQueryEx();
}

答案 2 :(得分:0)

您可以检查最后一个文件夹,然后检查文件夹编号。要检查号码,您可以执行此操作:

resultString = Regex.Match(pasteName, @"\d+").Value;

var number = Int32.Parse(resultString);

\d+是整数的正则表达式。

答案 3 :(得分:0)

你可以这样做:

con = new SqlDbConnect();
con.SqlQuery("SELECT * FROM categorie WHERE CAT_titel like @cattitel");
con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie%");
if (con.QueryEx().Rows.Count > 0)
{
    con = new SqlDbConnect();
    con.SqlQuery("INSERT INTO categorie(CAT_titel, CAT_aanmaakdatum) VALUES(@cattitel, @catdatum)");
    con._cmd.Parameters.AddWithValue("@cattitel", "Nieuwe categorie (" + con.QueryEx().Rows.Count.ToString() + ")");
    con._cmd.Parameters.AddWithValue("@catdatum", DateTime.Now);
    con.NonQueryEx();
}

此处不包含Else部分,因为它与您的相同。如果您注意到代码,则您的查询会更改为使用LIKE运算符来查看是否已存在值Nieuwe categorie的记录,如果不存在记录,ELSE将照常工作,但如果找到一条记录,则会创建Nieuwe categorie (1),如果找到两条记录,则会创建Nieuwe categorie (2),依此类推。