My String / Query看起来像这样
insert into Employee Values(1,2,'xxx');
update Employee2 set col1='xxx' where col2='yyy';
select * from Employee3;
我需要单独接受TableName
。表名不会是常数,根据DB,它们会有所不同(Employee,Employee2,Employee3)。我是C#
的新手,请帮助我。提前谢谢。
答案 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 "
您的查询之间的列之间不能有空格,并且最后也必须有空格。很抱歉有限制但我能想出的最好;)