私の文字列/クエリは次のようになります
insert into Employee Values(1,2,'xxx');
update Employee2 set col1='xxx' where col2='yyy';
select * from Employee3;
私は一人で取る必要がありますTableName
。テーブル名は一定ではなく、DBによって異なります(従業員、従業員2、従業員3)。私は私C#
を助けてください新しいです。前もって感謝します。
クエリ (またはこの場合は「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 "
クエリの列間にスペースを入れてはならず、最後にもスペースを入れる必要があります。制限があり申し訳ありませんが、私が思いつくことができる最高のものです;)