需要在c#中从Query中剪切一个字符串(表名)

时间:2013-03-12 14:20:29

标签: string cut

My String / Query看起来像这样

  1. insert into Employee Values(1,2,'xxx');
  2. update Employee2 set col1='xxx' where col2='yyy';
  3. select * from Employee3;
  4. 我需要单独接受TableName。表名不会是常数,根据DB,它们会有所不同(Employee,Employee2,Employee3)。我是C#的新手,请帮助我。提前谢谢。

1 个答案:

答案 0 :(得分: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 "

您的查询之间的列之间不能有空格,并且最后也必须有空格。很抱歉有限制但我能想出的最好;)