2017-11-28 2 views
0

ボタンをクリックすると、「新しいカテゴリ」という名前の新しいフォルダが作成されます。もう一度ボタンを押すと、「新しいカテゴリ(1)」というフォルダが作成されます。あなたのPCに新しいフォルダを作成するときと同じシステムです。これは今私が持っていることですが、これは新しいカテゴリー(1)を何度も作り続けています。誰かがそれが存在するかどうかを確認する方法を知っています。そうであれば1を2に変更します。どうも!C#既にフォルダが存在する場合に1つづつ番号を付けます。

 con = new SqlDbConnect(); 
     con.SqlQuery("SELECT * FROM categorie WHERE [email protected]"); 
     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(); 
     } 
+3

フォルダとは何が関係していますか? – caesay

+1

質問を編集し、問題をより明確に説明してください。 –

+1

ファイルはどこに作成しますか?あなたのコードがあなたの質問にどのように関係しているのか分かりません。 – HimBromBeere

答えて

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(); 
+0

これは完璧に動作します。ありがとうございました! –

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(); 
} 
+0

これは、Sql注入のためにオープンしているにもかかわらず、OPコードとはどこが違うのですか? – HimBromBeere

+0

'どこで'が 'like 'で変更されました –

0

最後のフォルダーを確認して、フォルダー番号を確認できます。番号を確認するには、これを行うことができます。

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

var number = Int32.Parse(resultString); 

\d+は整数のための正規表現です。

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一部はここに含まれていません。コードに気づいた場合は、Nieuwe categorieという値を持つレコードがあるかどうかを調べるために、LIKE演算子を使用するようにクエリが変更されます。レコードが存在しない場合、ELSEは通常通り動作しますが、レコードが1つ見つかった場合はNieuwe categorie (1)が作成されます。 2つのレコードが見つかり、Nieuwe categorie (2)が作成されます。

関連する問題