----------------------------大神帮看下,从SQL语句中抽取表名-----------------------

雄牛 2017-05-06 05:24:38

感觉代码有很多BUG,但目前还没测出来,路过的帮瞄一瞄...谢谢


//精简SQL语句,准确定位表名
public static string resultTable(string strSQL)
{
string sTable = strSQL;
if (strSQL.Contains("insert into"))
{
sTable = sTable.Substring(sTable.IndexOf("insert into"), sTable.Length - sTable.IndexOf("insert into"));
sTable = sTable.Substring(sTable.IndexOf("insert into"), sTable.IndexOf("(") - sTable.IndexOf("insert into")).Trim();//截取表名
sTable = sTable.Replace("insert into", "").Trim();
}
if (strSQL.Contains("update"))
{
sTable = sTable.Substring(sTable.IndexOf("update"), sTable.Length - sTable.IndexOf("update"));
sTable = sTable.Substring(sTable.IndexOf("update"), sTable.IndexOf("set") - sTable.IndexOf("update")).Trim();//截取表名
sTable = sTable.Replace("update", "").Trim();
}
if (strSQL.Contains("delete from") && strSQL.Contains("where"))
{
sTable = sTable.Substring(sTable.IndexOf("delete from"), sTable.Length - sTable.IndexOf("delete from"));
sTable = sTable.Substring(sTable.IndexOf("delete from"), sTable.IndexOf("where") - sTable.IndexOf("delete from")).Trim();//截取表名
sTable = sTable.Replace("delete from", "").Trim();
}
return sTable;
}
...全文
256 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
人鱼传说 2017-05-07
  • 打赏
  • 举报
回复
如果楼主只是提取单表操作的SQL,那你的方法应该是够用了,如果多表联合操作,那就复杂,就看你要做到哪个程度
xuzuning 2017-05-06
  • 打赏
  • 举报
回复
识别 SQL 指令,本来就该根据语言范式做词法和语法分析的
xuzuning 2017-05-06
  • 打赏
  • 举报
回复
那是 你都没做,我干嘛要加?
雄牛 2017-05-06
  • 打赏
  • 举报
回复
这个简单的可以,但碰到那种前面有declare @name='AAA'.... 或是定义有@updatetime就会有问题了...
xuzuning 2017-05-06
  • 打赏
  • 举报
回复
用正则

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧