问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# 怎样从文本提取SQL文,跳过注释

发布网友 发布时间:2022-04-16 00:21

我来回答

3个回答

热心网友 时间:2022-04-16 01:50

给你一个函数,这是我以前写的一个从文件中取SQL文,也是MySql的
但是因为文件中有可能会有多个SQL文,所以里面判断“;”为一条语句结束,返回SQL文的字符串数组。你要只有一条SQL文的话,改一下就可以用了

private string[] GetSqlList()
{
StreamReader objReader = new StreamReader("Insert.sql", Encoding.UTF8);
string sLine = string.Empty;
StringBuilder objStringBuilder = new StringBuilder();

while (sLine != null)
{
sLine = objReader.ReadLine();
if (!string.IsNullOrEmpty(sLine))
objStringBuilder.Append(sLine + "\n");
}
objReader.Close();
string strSQL = objStringBuilder.ToString();

if (string.IsNullOrEmpty(strSQL))
{
return new string[] { };
}

int i = 0;
ArrayList arrSql = new ArrayList();
string strTempSql = string.Empty;

//取得注释以外的有効SQL文
while (i < strSQL.Length)
{
bool bolIsBreak = false;
switch (strSQL.Substring(i, 1))
{
case "`":
int intPosition = strSQL.IndexOf(strSQL.Substring(i, 1), i);
if (intPosition == -1)
{
strTempSql += strSQL.Substring(i);
bolIsBreak = true;
}
else
{
strTempSql += strSQL.Substring(i, intPosition - i + 1);
i = intPosition;
}
break;
case "'":
goto case "`";
case "\"":
goto case "`";
case "/":
if (strSQL.Length > i + 1 && strSQL.Substring(i, 2).Equals("/*"))
{
i = strSQL.IndexOf("*/", i);
if (i == -1)
{
bolIsBreak = true;
}
i++;
}
else
{
strTempSql += strSQL.Substring(i, 1);
}
break;
case "-":
//--
if (strSQL.Length > i + 1 && strSQL.Substring(i, 2).Equals("--"))
{
i = strSQL.IndexOf("\n", i);
if (i == -1)
{
bolIsBreak = true;
}
}
else
{
strTempSql += strSQL.Substring(i, 1);
}
break;
case ";":
strTempSql = strTempSql.TrimStart('\n');
if (!string.IsNullOrEmpty(strTempSql))
{
arrSql.Add(strTempSql);
}
strTempSql = string.Empty;
break;
default:
strTempSql += strSQL.Substring(i, 1);
break;
}

if (bolIsBreak)
{
break;
}
i++;
}

strTempSql = strTempSql.TrimStart('\n');
if (!string.IsNullOrEmpty(strTempSql))
{
arrSql.Add(strTempSql);
}

string[] lstSql = new string[arrSql.Count];
for (i = 0; i < arrSql.Count; i++)
{
lstSql[i] = arrSql[i].ToString();
}

return lstSql;
}

热心网友 时间:2022-04-16 03:08

一般来说,读取每一行,如果开头是--就可以认为是注释,
如果串中包含/*就认为是多行注释的开始,直到遇到*/。

还有一种情况很复杂,需要判断/* */是否在字符串中
insert tab1('/*..*/', ...)
上面这句话中的/* */是不能当作注释的,因为在字符串中。

所以还需要判断注释是否在字符串中, 也就是检测单引号"'"。

过程相当复杂。

热心网友 时间:2022-04-16 04:43

如果用正则表达式,代码更短

/// <summary>
/// 为//和/**/类型的注释着色
/// </summary>
/// <param name="src">输入源码</param>
/// <returns>格式化后的源码</returns>
private string ColorBasicComment(string src)
{
string retCode = src;
Regex r1 = new Regex(@"(^|;)([ \t]*)(//.*$)", RegexOptions.Multiline);
retCode = r1.Replace(retCode, "$1$2<span [CSS_COMMENT]>$3</span>");
Regex r2 = new Regex(@"(^|[ \t]+)(/\*[^\*/]*\*/[ \t\r]*$)", RegexOptions.Multiline);
retCode = r2.Replace(retCode, new MatchEvaluator(this.ColorBasicComment2Evaluator));
return retCode;
}
c#快速把txt文件导入sql

使用文件流FileStream来打开txt文件,使用读取器streamreader来读取内容拼接sql语句,将读取的内容填充到sql语句中,调用方法写入到数据库

C#代码实现从文件中读出数据在导入到数据库

//定义数据连接字符串 private string connStr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; /// /// 用insert方法从文本文件中批量导入到数据库表中 /// /// /// private void btnInsert_Click(object sender, RoutedEventArgs e) { Ope...

C#将文本框的字符串存入SQL数据库中,先来个简单点的,谢谢,学到数据库就...

这个首先你需要建好数据表,连接数据库然后执行如下格式SQL语句 INSERT INTO [表名](列名1,列名2)VALUES('" + txt_model.Text + "','" + txt_client.Text + "')

C#怎么把文本框中的数据写到SQL数据库中

写一个 string sql="insert into table values('"+TextBox1.Text+"')";调用下面方法,如果返回 1 证明已经添加进去 public static int ExecuteCommand(string safeSql){ SqlCommand cmd = new SqlCommand();SqlConnection conn = new SqlConnection(connectionStrings);try { PrepareCommand(cmd, con...

C#如何把一个文件的内容写到SQL Server数据库里

FileInfo[] ff = di.GetFiles("*.txt");//只取文本文档 string ss = "";//存放内容 foreach (FileInfo temp in ff){ using (StreamReader sr = temp.OpenText()){ ss += sr.ReadToEnd();//内容追加到ss中 } } File.AppendAllText("要保存的文件路径", ss);//保存到一个文件里 如...

c#中怎么实现在文本框中输入一条信息,并且通过点击同一个按钮查询两个...

将sql语句及后面的判断产品名称,名字部分封装为一方法,方法前判断输入框中的内容,然后用这内容来拼接from 表名 我新人,如有不到,还请见谅

请问怎么把C#文本框里的文字和SQL里的数据互相匹配?

若此列是数值类型,则SQL语句是:select * from 表名 where 列名 = 文本框值若此列是字符类型,则SQL语句是:select * from 表名 where 列名 like '%文本框值%'

C#中使用SQL语句,SQL语句中含有汉字时,应怎样处理?

没关系;字符串, 用 ' ' 单引号引起来就好了

怎么把txt导入sql数据库c#代码。按字节读取格式化的txt文本,比如A=B...

{ string[] data=str.spilte('=');FT+=FT==string.empty?data[0]:","+data[0];FV+=FV==string.empty?"'"+data[1]+"'":",'"+data[1]+"'";} } IF(FT!=string.empty&amp;&amp;FV!=string.empty)string sql=string.formate("insert into table ({0}) values ({1})",FT,FV);...

C#怎么用@符写SQL代码,不用+=连,因为涉及到GO,用@的话文本框的内容要...

string insert =String.Format(@"INSERT INTO [AviationAccidentDatabase].[dbo].[AirportInformation]([Airport_PKID],[AirportName],[ThreeCode],[ICAOCode])VALUES(newid(),'{0}','{1}','{2}') Go",textBoxDeparture.Text ,textBoxDepT.Text , textBoxDepF.Text) ;...

word怎么设置文本注释 UG怎么拉伸注释文本 ug注释文本怎么设置方向 eclipse导出文本注释 ug文本注释 UG的文本和注释有什么区别 文档怎么标注释 行注释和块注释 提取特定的文本内容
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
四川灵猴工程管理有限公司怎么样? 邓光君湖北师范学院教授 四川伟豪建筑工程有限公司怎么样? 成都五月花投资管理有限公司怎么样? 四川同君企业管理有限公司怎么样? 一直很想知道一部电影的名字。是日本的,悲剧,讲的是一个小偷的故事,下... 异性朋友生日送什么礼物好啊? 公主抱女生有什么反应 ...摩托车什么手续都没有了,还能上牌照吗?都需要什么啊? ...长20厘米宽14厘米那样从四角剪去边长2厘米的正方体然后做成一个无盖... 对公账户怎么办理,需要什么手续。求高手 纤引可以改善富贵包吗? 我是当地一名维修师傅,我这有一台纽恩泰空气能制热慢,经过检查漏氟,不知加到多少才够呢! 我的纽恩泰家用型空气能热水器显示器,数字显示不清楚了,然后我乱按了几下就怎么搞都不制热了。 纽恩泰空气能热水器设置最高温度50度。到58度才停止制热什么问题 纽恩泰空气能冬天要制热多长时间 把一篇文章放到数据库使用java 宇文邕喜欢独孤伽罗吗 独孤天下宇文邕隐忍悲痛成全 游桃源山记(清)李澄中的翻译 周天宇和周行长到底是什么关系? 独孤天下宇文邕和独孤伽罗什么关系 独孤天下宇文邕 周天宇的爹到底是谁? 李世民的奶奶是谁 《独孤天下》曼陀献身李昞怀孕了吗? 《独孤天下》中,般若为何专宠伽罗不喜欢曼陀? 看古人怎样制玉,清李澄渊之《玉作图》 远胄在文言文中的意思 游桃源山记 李澄中 翻译 李澄中的《游青山记》翻译 李澄垚名字可以得到多少分 唐山丰润新区人才招聘会在哪里 唐山丰润南厂 招聘 唐山丰润区哪有招开小货车司机的 唐山市丰润区哪里招聘兼职打字员 唐山丰润教师招聘 唐山丰润区找工作 唐山丰润南厂2013年招聘的工资待遇怎么样? 唐山市丰润区有人才市场吗?具体地址是多少 并行不悖是什么意思呢? 唐山市丰润区人才市场的地址在哪? 并行不悖是什么意思,并行不悖怎么解释,并行不悖成语解释 最近唐山丰润哪个工地需要临时工在网上可以找到吗? 并行不悖的典故?? 唐山丰润都有哪些高中或技校 并行不悖和相得益彰的区别 唐山(丰润)蒙牛乳业招聘服务电话 并行不悖是褒义还是贬义? 紧急:我唐山丰润人,在钢厂工作,三班倒,想在业余找个兼职,多挣点钱! 并行不悖拼音 并行不悖什么意思?