-2

私の文字列/クエリは次のようになります

  1. insert into Employee Values(1,2,'xxx');
  2. update Employee2 set col1='xxx' where col2='yyy';
  3. select * from Employee3;

私は一人で取る必要がありますTableName。テーブル名は一定ではなく、DBによって異なります(従業員、従業員2、従業員3)。私は私C#を助けてください新しいです。前もって感謝します。

4

1 に答える 1

0

クエリ (またはこの場合は「sql」という名前の文字列) からテーブルの名前を取得するには、次のことを試してください。

        string sql = "select * from table ";
        int index1 = 0;
        int index2 = 0;
        int currentIndex = 0;
        int numSpaces = 0;
        char[] chArray = sql.ToCharArray();
        foreach (char c in chArray)
        {
            if (c == ' ')
            {
                numSpaces++;
                if (numSpaces == 3)
                    index1 = currentIndex;
                if (numSpaces == 4)
                {
                    index2 = currentIndex;
                    break;
                }
            }
            currentIndex++;
        }
        int length = index2 - index1;
        string tableName = sql.Substring(index1, length);
        MessageBox.Show(tableName);

警告 - この解決策は、3 番目と 4 番目のスペース文字の間の単語を見つけることに基づいています。これにより、非常に予測可能なクエリ構造が制限されます。より複雑なクエリは、このソリューションでは機能しない可能性があります。クエリ構造は次のようにする必要があります。

"select column_name1,column_name2,column_name3 from table "

クエリの列間にスペースを入れてはならず、最後にもスペースを入れる必要があります。制限があり申し訳ありませんが、私が思いつくことができる最高のものです;)

于 2013-03-13T11:26:20.420 に答える