当我点击一个按钮时,它会创建一个名为“新类别”的新文件夹。当我再次按下按钮时,我希望它创建一个文件夹'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();
}
答案 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)
,依此类推。