C#和java中执行sql文件脚本的代码
发布时间:2020-12-15 00:17:48 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package com.zz; import java.io.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Vector;
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 package com.zz; import java.io.*; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Vector; /* * 作者 祝君 * 时间 2014年1月16号 * java执行数据库脚本代码 */ public class SqlHelper { /** * @param args */ public static void main(String[] args) { String path=new String("d:zzadmin.sql"); String sql=GetText(path); String[] arr=getsql(sql); for(int i=0;i<arr.length;i++) System.out.println("第"+i+"句:"+arr[i]); } public static String GetText(String path){ File file=new File(path); if(!file.exists()||file.isDirectory()) return null; StringBuffer sb=new StringBuffer(); try { FileInputStream fis = new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); BufferedReader br = new BufferedReader(isr); String temp=null; temp=br.readLine(); while(temp!=null){ sb.append(temp+"rn"); temp=br.readLine(); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } /** * 获取sql文件中的sql语句数组 * @param sql * @return 数组 */ public static String[] getsql(String sql) { String s=sql; s=s.replace("rn","r"); s=s.replace("r","n"); String[] ret=new String[1000]; String[] sqlarray=s.split(";n"); sqlarray=filter(sqlarray); int num=0; for (String item : sqlarray) { String ret_item = ""; String[] querys = item.trim().split("n"); querys = filter(querys);//去空 for (String query : querys) { String str1 = query.substring(0,1); String str2 = query.substring(0,2); if (str1.equals("#") || str2.equals("--") || str2.equals("/*") || str2.equals("//"))//去除注释的关键步奏 { continue; } ret_item += query; } ret[num] = ret_item; num++; } return filter(ret); } /// <summary> /// 去除空值数组 /// </summary> /// <param name="ss">数组</param> /// <returns></returns> public static String[] filter(String[] ss) { List<String> strs = new ArrayList<String>(); for (String s : ss) { if (s != null && !s.equals("")) strs.add(s); } String[] result=new String[strs.size()]; for(int i=0;i<strs.size();i++) { result[i]=strs.get(i).toString(); } return result; } //删除注释 public void deletezs(String fileStr) { try{ Vector<String> vec=new Vector<String>(); String str="",tm="",mm=""; BufferedReader br = new BufferedReader( new FileReader(fileStr)); boolean bol=false; while( null != (str = br.readLine() ) ) { if ((str.indexOf("/*")>=0)&&((bol==false))) { if (str.indexOf("*/")>0) { bol=false; vec.addElement(str.substring(0,str.indexOf("/*"))+str.substring(str.indexOf("*/")+2,str.length())); } else { bol=true; mm=str.substring(0,str.indexOf("/*")); if (!(mm.trim().equals(""))) vec.addElement(mm); } } else if (bol==true) { if (str.indexOf("*/")>=0) { bol=false; mm=str.substring(str.indexOf("*/")+2,str.length()); if (!mm.trim().equals("")) vec.addElement(mm); } } else if (str.indexOf("//")>=0) { tm=str.substring(0,str.indexOf("//")); if (!tm.trim().equals("")) vec.addElement(tm); } else { vec.addElement(str); } } br.close(); File fName=new File(fileStr); FileWriter in=new FileWriter(fName); String ssss=""; Enumeration<String> ew=vec.elements(); while (ew.hasMoreElements()) { ssss= ew.nextElement().toString(); in.write(ssss+"n"); } in.close(); vec.clear(); }catch(Exception ee){ ee.printStackTrace(); } } } //-------------------------第一种------------------------------------- /// <summary> /// 获取sql文件中的sql语句数组 第一种方法 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static string[] sql_split(string sql) { string s = sql; Regex reg = new Regex("/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/"); reg.Replace(sql,"ENGINE=1 DEFAULT CHARSET=utf8"); s = s.Replace('r','n'); string[] ret = new string[10000]; string[] sqlarray = StringSplit(s,";n"); int num = 0; foreach (string item in sqlarray) { ret[num] = ""; string[] queries = item.Split('n'); queries = filter(queries); foreach (string query in queries) { string str1 = query.Substring(0,1); string str2 = query.Substring(0,2); if (str1 != "#" && str2 != "--" && str2 != "/*" && str2 != "//")//去除注释的关键步奏 { ret[num] += query; } } num++; } ret = filter(ret); return ret; } /// <summary> /// 去除空值数组 /// </summary> /// <param name="ss"></param> /// <returns></returns> public static string[] filter(string[] ss) { List<string> strs = new List<string>(); foreach (string s in ss) { if (!string.IsNullOrEmpty(s)) strs.Add(s); } string[] result = strs.ToArray(); return result; } /// <summary> /// 将字符串分割成数组 /// </summary> /// <param name="strSource"></param> /// <param name="strSplit"></param> /// <returns></returns> public static string[] StringSplit(string strSource,string strSplit) { string[] strtmp = new string[1]; int index = strSource.IndexOf(strSplit,0); if (index < 0) { strtmp[0] = strSource; return strtmp; } else { strtmp[0] = strSource.Substring(0,index); return StringSplit(strSource.Substring(index + strSplit.Length),strSplit,strtmp); } } /// <summary> /// 采用递归将字符串分割成数组 /// </summary> /// <param name="strSource"></param> /// <param name="strSplit"></param> /// <param name="attachArray"></param> /// <returns></returns> private static string[] StringSplit(string strSource,string strSplit,string[] attachArray) { string[] strtmp = new string[attachArray.Length + 1]; attachArray.CopyTo(strtmp,0); int index = strSource.IndexOf(strSplit,0); if (index < 0) { strtmp[attachArray.Length] = strSource; return strtmp; } else { strtmp[attachArray.Length] = strSource.Substring(0,strtmp); } } //----------------------------------------------------- //-----------------------第二种------------------------------ /// <summary> /// 获取sql文件中的sql语句数组 第二种 /// </summary> /// <param name="sql"></param> /// <returns></returns> public string[] getsqls(string sql) { string s = sql; s = s.Replace("rn","n"); s = s.Replace("r","n").Trim(); string[] ret = new string[1000]; string[] sqlarray= StringSplit(s,";n"); sqlarray = filter(sqlarray);//去空 int num=0; foreach (string item in sqlarray) { string ret_item = ""; string[] querys = item.Trim().Split('n'); querys = filter(querys);//去空 foreach (string query in querys) { string str1 = query.Substring(0,2); if (str1 == "#" || str2 == "--" || str2 == "/*" || str2 == "//")//去除注释的关键步奏 { continue; } ret_item += query; } ret[num] = ret_item; num++; } return filter(ret); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 什么是notifyItemRangeChanged(0,this.d
- java-8 – Optional.ifAbsentThrow()?
- publishing failed with multiple errors
- java – 如何确保多个线程可以安全地访问类字段?
- 如何组织我的Java Eclipse项目,以便用户只需要进
- java – ResultSet的Oracle JDBC性能
- Java SpringMVC实现国际化整合案例分析(i18n)
- Java Swing应用程序中的次要重构导致巨大的减速
- java – 为什么带有UTF-8的新String包含更多字节
- java – JUNG上的Redraw Graph
热点阅读