关于字符串替换 的 问题 String a = " select a from abc where @B["; String b = " a = 5"; a = a.replaceAll("@B[",b); //抛出异常 //Unclosed character class near index 2 //@B[ // ^ 发现String.areplaceAll(a,b); 如果b要替换a, a中含有字符有'[','{','{}','[]'都会分析错误抛异常(如果是单左括号,会抛括号不匹配异常) String a = " select a from abc where @B["; String b = " a = 5"; a = a.replaceAll("@B[",b); 这样就可以替换了[@more@]关于字符串替换 的 问题 String a = " select a from abc where @B["; String b = " a = 5"; a = a.replaceAll("@B[",b); //抛出异常 //Unclosed character class near index 2 //@B[ // ^ 发现String.areplaceAll(a,b); 如果b要替换a, a中含有字符有'[','{','{}','[]'都会分析错误抛异常(如果是单左括号,会抛括号不匹配异常) String a = " select a from abc where @B["; String b = " a = 5"; a = a.replaceAll("@B[",b); 这样就可以替换了 为什么要用replaceAll而不用replace呢?用replace就不存在那些问题了。 下面是java api doc中关于replaceAll的一段叙述: public String replaceAll(String regex, String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。 此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果: Pattern.compile(regex).matcher(str).replaceAll(repl) 参数: regex - 用来匹配此字符串的正则表达式 返回: 得到的 String 抛出: PatternSyntaxException - 如果正则表达式的语法无效 Java转义符 转义序列 标准形式 功能描述 n NL 回车换行 t HT 水平制表符 b BS 后退一格 r CR 回车不换行 f FF 换页 ' ' 单引号 反斜杠 " " 双引号 ddd 0ddd 八进制模式 xddd 0xddd 十六进制模式 udddd 0xdddd Unicode双字节字符 追加内容到文件末尾的几种常用方法 import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; /** * 描述:追加内容到文件末尾 * @author Administrator * */ public class WriteStreamAppend { /** * 追加文件:使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true * * @param fileName * @param content */ public static void method1(String file, String conent) { BufferedWriter out = null; try { out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(file, true))); out.write(conent); } catch (Exception e) { e.printStackTrace(); } finally { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 追加文件:使用FileWriter * * @param fileName * @param content */ public static void method2(String fileName, String content) { try { // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 FileWriter writer = new FileWriter(fileName, true); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 追加文件:使用RandomAccessFile * * @param fileName * 文件名 * @param content * 追加的内容 */ public static void method3(String fileName, String content) { try { // 打开一个随机访问文件流,按读写方式 RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw"); // 文件长度,字节数 long fileLength = randomFile.length(); // 将写文件指针移到文件尾。 randomFile.seek(fileLength); randomFile.writeBytes(content); randomFile.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { System.out.println("start"); method1("c:/test.txt", "追加到文件的末尾"); System.out.println("end"); } } SQL Server2000 数据表导出XML方法 1. For XML 语句 1)语法: FOR XML mode [, XMLDATA] [, ELEMENTS][, BINARY BASE64] 2)参数: l XML mode 指定 XML 模式。XML 模式决定所得到的 XML 的形式。 mode 可以是 RAW、AUTO 或 EXPLICIT。 l XMLDATA 指定应返回 XML-Data 架构。文档的架构被预先设计为内嵌式架构。 l ELEMENTS 如果指定 ELEMENTS 选项,则列作为子元素返回。否则,列将映射到 XML 特性。只有在 AUTO 模式下才支持该选项。 l BINARY BASE64 如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用base64 编码格式表示。使用 RAW 和 EXPLICIT 模式检索二进制数据时,必须指定该选项。在 AUTO 模式中,默认情况下将二进制数据作为引用返回。 2. FOR XML 子句的使用准则 l 无论在 UPDATE、INSERT 或 DELETE 语句、嵌套 SELECT 语句还是其它语句(SELECT INTO、赋值语句)中,FOR XML 在子选择中都无效。例如 例1:SELECT * FROM Table1 WHERE ......(SELECT * FROM Table2 FOR XML RAW) 例2:DECLARE @doc nchar(3000) SET @doc = (SELECT * FROM Customers WHERE CustomerID = 'ALFKI' FOR XML RAW) l 对于与 COMPUTE BY 或 FOR BROWSE 子句一起使用的任何选择语句,FOR XML 都无效,例如: 例1:SELECT OrderID, UnitPrice FROM [Order Details] ORDER BY OrderID COMPUTE SUM(UnitPrice) BY OrderID 当前不支持 GROUP BY 和聚合函数与 FOR XML AUTO 共同使用。例如: 例1:SELECT max(price), min(price), avg(price) FROM titles FOR XML AUTO l FOR XML 在用于视图定义或用于返回行集的用户定义函数的 SELECT 语句中无效。 下面的语句无效: CREATE VIEW AllOrders AS SELECT * FROM Orders FOR XML AUTO 下面的语句可行: SELECT * FROM ViewName FOR XML AUTO are allowed l FOR XML 无法用于需要在存储过程中进一步处理的选择语句。 l FOR XML 不能与游标一起使用。 l 一般情况下,FOR XML 无法不能不直接将结果输出到SQL Server 2000 客户端的任何选择语句。 l FOR XML 无法用于在 INSERT 语句中调用的存储过程。 l 如果带 FOR XML 子句的 SELECT 语句在查询中指定一个由四部分组成的名称,则在本地计算机上执行查询时,在所得到的 XML 文档中将不返回这个服务器名称。但是,当在网络服务器上执行查询时,将返回这个由四部分组成的服务器名称。 例如:当使用下面的语句查询: SELECT TOP 1 LastName FROM ServerName.Northwind.dbo.Employees FOR XML AUTO A.当 ServerName 是本地服务器时,该查询返回: B.当 ServerName 是网络服务器时,该查询返回: 以上的问题,通过指定别名可避免上述现象: SELECT TOP 1 LastName ROM ServerName.Northwind.dbo.Employees x FOR XML AUTO 该查询返回: 在带 FOR XML AUTO 子句的 SELECT 语句中使用派生表可能不会产生希望的嵌套。 3. sp_makewebtask 创建一项生成 HTML 文档的任务,该文档包含执行过的查询返回的数据。 语法 sp_makewebtask [@outputfile =] 'outputfile', [@query =] 'query' [, [@fixedfont =] fixedfont] [, [@bold =] bold] [, [@italic =] italic] [, [@colheaders =] colheaders] [, [@lastupdated =] lastupdated] [, [@HTMLheader =] HTMLheader] [, [@username =] username] [, [@dbname =] dbname] [, [@templatefile =] 'templatefile'] [, [@webpagetitle =] 'webpagetitle'] [, [@resultstitle =] 'resultstitle'] [ [, [@URL =] 'URL', [@reftext =] 'reftext'] | [, [@table_urls =] table_urls, [@url_query =] 'url_query'] ] [, [@whentype =] whentype] [, [@targetdate =] targetdate] [, [@targettime =] targettime] [, [@dayflags =] dayflags] [, [@numunits =] numunits] [, [@unittype =] unittype] [, [@procname =] procname ] [, [@maketask =] maketask] [, [@rowcnt =] rowcnt] [, [@tabborder =] tabborder] [, [@singlerow =] singlerow] [, [@blobfmt =] blobfmt] [, [@nrowsperpage =] n] [, [@datachg =] table_column_list] [, [@charset =] characterset] [, [@codepage =] codepage] 参数 [@outputfile =] 'outputfile' 在 Microsoft SQL Server的实例上生成的 HTML 文件的位置。如果文档将在远程计算机上生成,则该参数可以是 UNC 名称。outputfile 的数据类型为 nvarchar(255),没有默认值。 [@query =] 'query' 要运行的查询。query 的数据类型为 ntext,没有默认值。当通过 sp_runwebtask 运行任务时,查询结果将以表格形式显示在 HTML 文档中。可以指定多个 SELECT 查询,从而导致在 outputfile 中显示多个表。 [@fixedfont =] fixedfont 指定查询结果是以固定字体 (1) 还是以成比例字体 (0) 显示。fixedfont 的数据类型为 tinyint,默认值为 1。 [@bold =] bold 指定查询结果是以粗体 (1) 还是非粗体 (0) 显示。bold 的数据类型为 tinyint,默认值为 0。 [@italic =] italic 指定查询结果是以斜体 (1) 还是非斜体 (0) 显示。italic 的数据类型为 tinyint,默认值为 0。 [@colheaders =] colheaders 指定查询结果是带列标题 (1) 还是不带列标题 (0) 显示。colheaders 的数据类型为 tinyint,默认值为 1。 [@lastupdated =] lastupdated 指定所生成的 HTML 文档是否显示"上次更新时间:"时间戳指示上次更新的日期和时间 (1) 或者没有时间戳 (0)。在 HTML 文档中,时间戳出现在查询结果的前一行。lastupdated 的数据类型为 tinyint,默认值为 1。 [@HTMLHeader =] HTMLHeader 指定用于显示包含在 resultstitle 中的文本的 HTML 格式代码。HTMLheader 的数据类型为 tinyint,可以是下列值之一。 值 HTML 格式代码 1 H1 2 H2 3 H3 4 H4 5 H5 6 H6 [@username =] username 是执行查询的用户名。username 的数据类型为 nvarchar (128),默认设置为当前用户。系统管理员或数据库所有者可以指定其它用户名。 [@dbname =] dbname 在其上运行查询的数据库名。dbname 的数据类型为 nvarchar(128),默认值为当前数据库。 [@templatefile =] 'templatefile' 用于生成 HTML 文档的模板文件的路径。模板文件包含 HTML 文档的格式特征信息和标记 ,该标记指示将查询结果添加到 HTML 表中的位置。templatefile 的数据类型为 nvarchar(255)。 4. 导出XML实例 1)新建一个模板文件TEMPXML.tmp,内容为: 2)在查询分析器中执行SQL语句: Use Northwind --此处可以修改为相应的数据库名 GO --通过系统存储过程sp_makewebtask,将查询结果导出为XML文件C:Test.xml EXEC sp_makewebtask @outputfile = 'C:Test.xml', @query = 'Select Top 5 * From EC_Student for XML Auto,ELEMENTS', @templatefile ='C:TEMPXML.tmp' 3)利用.NET读取XML文件: A.在窗体中创建一个DataGrid,一个按钮Button B.在按钮事件中输入以下内容: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click DataSet1.ReadXml("C:Test.XML") Dim tb As DataTable Dim dv As DataView tb = DataSet1.Tables(0) dv = New DataView(tb) DataGrid1.DataSource = dv End Sub Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1574838
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/234666/viewspace-980602/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/234666/viewspace-980602/