问题描述
在vb.net中引入了xml.linq那么dimabcasstring=<a>xxxxxxbbbbb</a>这是没问题的。问题是我用这个的主要功能是写sql语句,这么问题来了。dimabcasstring=<a>declare@abcint=3if@abc<=2</a>if@abc后面的<号出错了,被当成特殊字符了。我如何处理这个<,让他当成普通字符?
解决方案
解决方案二:
DimabcAsString=<a>declare@abcint=3<![CDATA[if@abc<=2]]></a>我是菜鸟,不知道你说的是不是这个意思?
解决方案三:
为啥你不直截了当地写个字符串DimabcAsString="Declare@abcint=3If@abc<=2........."
呢?
解决方案四:
我是不用vb.net啦,所以可能不能很好理解你们的编程的心思。这里,为什么不使用普通的字符串?能否说明一下?
解决方案五:
他这段是用在数据库里的,也就是说,相当于在数据库的查询窗口里输入。比如我有一句DimSQLAsString="insertintotest(img)values(@bytes)"这个“@bytes”实际上是我从图片转化来的的二维数组,这样的东西当然直接写是不行的,只有用这样的方式写
解决方案六:
当然,我也是菜鸟,至于他是不是用在这方面,得问他,我不清楚。
解决方案七:
再比如相当于要在数据库的窗口里面写declare@abcint=3;if@abc<=2这样子
解决方案八:
引用3楼sp1234的回复:
我是不用vb.net啦,所以可能不能很好理解你们的编程的心思。这里,为什么不使用普通的字符串?能否说明一下?
C#能写,vb.net不能写多行字符。
解决方案九:
引用1楼gghhvva的回复:
DimabcAsString=<a>declare@abcint=3<![CDATA[if@abc<=2]]></a>我是菜鸟,不知道你说的是不是这个意思?
不报错了,应该是可以了。这个<!cdata[]]出自哪里?
解决方案十:
引用7楼ruhong1的回复:
Quote: 引用3楼sp1234的回复:
我是不用vb.net啦,所以可能不能很好理解你们的编程的心思。这里,为什么不使用普通的字符串?能否说明一下?C#能写,vb.net不能写多行字符。
c#中不能写。这个带有换行的"......"字符串至少我的vb.net编辑器里边是可以写的。你的vs版本是不是太低了?
解决方案十一:
引用8楼ruhong1的回复:
Quote: 引用1楼gghhvva的回复:
DimabcAsString=<a>declare@abcint=3<![CDATA[if@abc<=2]]></a>我是菜鸟,不知道你说的是不是这个意思?不报错了,应该是可以了。这个<!cdata[]]出自哪里?
出自http://www.web258.cn/fileshow.asp?id=1261
解决方案十二:
引用9楼sp1234的回复:
Quote: 引用7楼ruhong1的回复:
Quote: 引用3楼sp1234的回复:
我是不用vb.net啦,所以可能不能很好理解你们的编程的心思。这里,为什么不使用普通的字符串?能否说明一下?C#能写,vb.net不能写多行字符。
c#中不能写。这个带有换行的"......"字符串至少我的vb.net编辑器里边是可以写的。你的vs版本是不是太低了?
我用的是vs2010,你的是什么版本啊。
解决方案十三:
换行符&_还有就是你写一行sql也认
解决方案十四:
[code=vb][SubCRE()'创建表结构DimConnectionStringAsString=bctopDimreaderAsSqlDataReader=NothingDimconnAsSqlConnection=NothingDimcmdAsSqlCommand=NothingDimcmd2AsSqlCommand=Nothingconn=NewSqlConnection(ConnectionString)Ifconn.State<>ConnectionState.OpenThenconn.Open()EndIfDimsql="CREATETABLETransAll"+_"(TTsmalldatetimeNOTNULL,"+_"VIPvarchar(16)NULL,"+_"IDvarchar(4)NOTNULL,"+_"txtimevarchar(4)NOTNULL,"+_"Dvarchar(7)NOTNULL,"+_"Vvarchar(7)null,"+_"HHvarchar(10)NOTNULL,"+_"PPvarchar(10)NOTNULL,"+_"PWvarchar(10)NOTNULL,"+_"ZLvarchar(6)NOTNULL,"+_"DLvarchar(2)NOTNULL,"+_"SLfloatNOTNULL,"+_"JEfloatNOTNULL,"+_"BSvarchar(20)NOTNULL,"+_"THBSvarchar(20)null)"cmd=NewSqlCommand(sql,conn)Dimsql2="CREATETABLECJall"+_"(TTsmalldatetimeNOTNULL,"+_"VIPvarchar(16)NULL,"+_"IDvarchar(4)NOTNULL,"+_"txtimevarchar(4)NOTNULL,"+_"Dvarchar(7)NOTNULL,"+_"Vvarchar(7)null,"+_"HHvarchar(10)NOTNULL,"+_"PPvarchar(10)NOTNULL,"+_"PWvarchar(10)NOTNULL,"+_"ZLvarchar(6)NOTNULL,"+_"DLvarchar(2)NOTNULL,"+_"SJslfloatNOTNULL,"+_"ZKslfloatNULL,"+_"CJslfloatNOTNULL,"+_"SJjefloatNOTNULL,"+_"ZKjefloatNULL,"+_"CJjefloatNOTNULL,"+_"BSvarchar(20)null,"+_"THBSvarchar(20)null,"+_"GLvarchar(20)NOTNULL)"cmd2=NewSqlCommand(sql2,conn)Trycmd.ExecuteNonQuery()cmd2.ExecuteNonQuery()PictureBox1.Image=My.Resources.wave_2CatchaeAsSqlExceptionMessageBox.Show(ae.Message.ToString())EndTryconn.Dispose()conn.Close()EndSub/code]+_也可以
解决方案十五:
总是看见在.net中还拼接字符串的为啥不用参数形式我从vb6进化到vb.net第一个技能点,就点到这里了
解决方案:
解决方案:
引用14楼xiaobingking的回复:
总是看见在.net中还拼接字符串的为啥不用参数形式我从vb6进化到vb.net第一个技能点,就点到这里了
用在sqlclr中,你用vb.net写clr的存储过程,一旦sql语句复杂点,你就得把sql代码写整齐,不好你不好调错,哪怕你没有错误通过了。过段时间回来,需要修改的时候,你也不好办。
解决方案:
引用16楼ruhong1的回复:
Quote: 引用14楼xiaobingking的回复:
总是看见在.net中还拼接字符串的为啥不用参数形式我从vb6进化到vb.net第一个技能点,就点到这里了用在sqlclr中,你用vb.net写clr的存储过程,一旦sql语句复杂点,你就得把sql代码写整齐,不好你不好调错,哪怕你没有错误通过了。过段时间回来,需要修改的时候,你也不好办。
你说的意思我知道但是这个问题不能成为不使用参数的原因多行代码我都会复制保存在相应位置,设置为备注形式,给自己查阅如果有修改,在修改就好了
解决方案:
解决方案:
引用11楼ruhong1的回复:
我用的是vs2010,你的是什么版本啊。
自从免费的vs2015社区版发布,我就用vs2015了。
解决方案:
很古老的vb编译器支持的写法是这样的DimabcAsString="declare@abcint=3"&vbLf&"If@abc<=2"&vbLf&"begin"&vbLf&"select1"&vbLf&"else"&vbLf&"select2"&vbLf&"end"
后来大概是vb10版本,支持了用_符号作为行结束的符号。现在的vb2015更方便了,直接支持在字符串中换行的写法。
解决方案:
引用20楼sp1234的回复:
很古老的vb编译器支持的写法是这样的DimabcAsString="declare@abcint=3"&vbLf&"If@abc<=2"&vbLf&"begin"&vbLf&"select1"&vbLf&"else"&vbLf&"select2"&vbLf&"end"后来大概是vb10版本,支持了用_符号作为行结束的符号。现在的vb2015更方便了,直接支持在字符串中换行的写法。
哦,明白了。现在还没用vs2015,电脑配置不够,没有装win7