如果您想了解使用java以及jdbc不使用第三方库执行sql文件脚本和java不用jdbc连接数据库的知识,那么本篇文章将是您的不二之选。我们将深入剖析使用java以及jdbc不使用第三方库执行sql
如果您想了解使用java以及jdbc不使用第三方库执行sql文件脚本和java不用jdbc连接数据库的知识,那么本篇文章将是您的不二之选。我们将深入剖析使用java以及jdbc不使用第三方库执行sql文件脚本的各个方面,并为您解答java不用jdbc连接数据库的疑在这篇文章中,我们将为您介绍使用java以及jdbc不使用第三方库执行sql文件脚本的相关知识,同时也会详细的解释java不用jdbc连接数据库的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 使用java以及jdbc不使用第三方库执行sql文件脚本(java不用jdbc连接数据库)
- angularjs如何使用第三方库?angularjs使用第三方库详解
- C#和java中执行sql文件脚本的代码
- c++如何使用第三方库
- flask 从表单中的提交中获取数据(不使用第三方库)
使用java以及jdbc不使用第三方库执行sql文件脚本(java不用jdbc连接数据库)
使用java以及jdbc不使用第三方库执行sql文件脚本
使用java执行sql脚本的方法
解析sql脚本,删除不必要的注释和空行
将语句按分号拆开
并将最终的语句放入batch里面 最后进行执行
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
* 使用java以及jdbc执行sql脚本的工具示例代码
*/
public class SqlHelper {
public static void main(String[] args){
String path = "文件地址字符串";
String sql = getText(path);
List<String> sqlarr = getSql(sql);
for(int i=0; i<10; i++){
System.out.println(i+":"+sqlarr.get(i));
}
try{
SqlHelper.execute(getConn(),sqlarr);
}catch(Exception e){
e.printStackTrace();
}
}
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "数据库连接";
String username = "账号";
String password = "密码";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void execute(Connection conn, List<String> sqlFile) throws Exception {
Statement stmt = null;
stmt = conn.createStatement();
for (String sql : sqlFile) {
sql = sql.trim();
if(sql!=null&&!sql.equals(""))
stmt.addBatch(sql);
}
int[] rows = stmt.executeBatch();
System.out.println("Row count:" + Arrays.toString(rows));
conn.close();
}
/*
* getText方法吧path路径里面的文件按行读数来放入一个大的String里面去
* 并在换行的时候加入\r\n
*/
public static String getText(String path){
File file = new File(path);
if(!file.exists()||file.isDirectory()){
return null;
}
StringBuilder sb = new StringBuilder();
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){
if(temp.length()>=2){
String str1 = temp.substring(0, 1);
String str2 = temp.substring(0, 2);
if(str1.equals("#")||str2.equals("--")||str2.equals("/*")||str2.equals("//")){
temp = br.readLine();
continue;
}
sb.append(temp+"\r\n");
}
temp = br.readLine();
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return sb.toString();
}
/*
* getSqlArray方法
* 从文件的sql字符串中分析出能够独立执行的sql语句并返回
*/
public static List<String> getSql(String sql){
String s = sql;
s = s.replaceAll("\r\n", "\r");
s = s.replaceAll("\r", "\n");
List<String> ret = new ArrayList<String>();
String[] sqlarry = s.split(";"); //用;把所有的语句都分开成一个个单独的句子
sqlarry = filter(sqlarry);
ret = Arrays.asList(sqlarry);
return ret;
}
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;
}
}
angularjs如何使用第三方库?angularjs使用第三方库详解
本篇文章介绍了angularjs如何使用第三方库,有哪些第三方的库是可以让angularjs使用的,让我们带着问题一起进入文章。
Angular 的组件与模块看似好像与现有各种第三方类库(例如:lodash、moment 等)使用上有点格格不入,这很大的原因是 TypeScript 造成的假象。三足鼎立的前端其实都是雷同的,不管是哪种前端框架都可以使用到这些第三方类库。
以下我将从另一个视角解释 Angular 如何使用第三方类库的一种经验做法。
一、写在前面
在开始之前,需要先了解一下 TypeScript 模块系统 ——模块是指在其自身作用域里执行,而不是在全局作用域里;模块间是依靠 export 和 import 建立关系。编译器在编译过程中,也是依赖这种关系来定位需要编译的文件。
TypeScript 依然还是以 JavaScript 文件的形式发布类库,这会导致类型无法表述,需要配合声明文件对其进行类型描述;因此声明文件成了类库一个必不可少的组成部分。
二、分类
Angular 使用 TypeScript 语言开发,诚如上一小节讲来说,要想让一个类库被运用,要件是有没有声明文件。
有声明文件
要分清类库是否有声明文件 *.d.ts,可以从两个方面来确认这件事:
1、类库自带
从 Npm 安装一个依赖包后,可以直接检查其库的 package.json 是否包含 typings 节点,例如 moment:
"typings": "./moment.d.ts"
2、TypeSearch检索
TypeScript 提供了一个叫 TypeSearch 网站,可以直接输入关键词检查是否包含该类库的声明文件。
例如 lodash 可以在列表中点击会跳转至 npm 网站,并且会看到这样的一个命令:
npm install --save @types/lodash
无声明文件
这类情况还蛮常见,例如早一点时间 G2 就没有声明文件,这种情况下只能自行编写声明文件。
Angular Cli 创建的项目会包含一个 src/typings.d.ts 声明文件,它会自动包含在全局声明定义中,而把这些类库的声明信息写在这里面再好不过。
一般而言自己很难对一个类库写一个完整的声明文件,这对于成本来说太不合算,因此往往都是只对部分全局对象做一个 any (表示忽略该静态类型检查)亦可,例如:
// src/typings.d.ts declare var G2: any;
三、如何使用?
声明文件是纽带,依然以这种方式来划分如何使用。
对于有声明文件,无需额外做什么,只需在需要模块的地方使用 import 来导入即可,例如:
import * as moment from ''moment''; moment(); // 当前时间
无声明文件
重要来看无声明文件时怎么做,前面说到使用 any 来表示忽略静态类型检查,意味者无法享受声明文件带来的智能提示快感。
像 G2 ,我们可以在项目的任意位置直接使用它,但也仅仅只能识别 G2 变量,而实例的方法或属性是不可知的。
// app.component.ts const g2 = new G2(); g2. // 输入 `.` 后是不会有任何方法或属性
除此之外 TypeScript 编译过程中也不会对 G2 做任何类型检查,G2 是否真的存在只能由自己把握。对于 Angular 而言,是需要额外在 .angular-cli.json 的 scripts 节点上明确加载这些模块。(想看更多就到PHP中文网AngularJS开发手册中学习)
// .angular-cli.json "scripts": [ "../node_modules/@antv/g2/dist/g2.min.js" ]
TypeScript 编译后依然还是 JavaScript 代码,假如不手动加载 G2 相关 JavaScript 文件,自然在运行过程中会提供未找到 G2 的错误。
总结
从 TypeScript 的视角来看如何使用第三方类库,会有不同的感觉,只是一个简单的非靠谱但有效的描述。希望懂得多的人手下留情。
这里无意黑 G2 的意思,现 G2 已经提供了声明文件了。
好了,本篇文章到这就结束了(想看更多就到PHP中文网AngularJS使用手册中学习),有问题的可以在下方留言提问。
以上就是angularjs如何使用第三方库?angularjs使用第三方库详解的详细内容,更多请关注php中文网其它相关文章!
C#和java中执行sql文件脚本的代码
下面是小编 jb51.cc 通过网络收集整理的代码片段。
小编小编现在分享给大家,也给大家做个参考。
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+"\r\n"); temp=br.readLine(); } } catch (Exception e) { e.@R_301_1612@(); } return sb.toString(); } /** * 获取sql文件中的sql语句数组 * @param sql * @return 数组 */ public static String[] getsql(String sql) { String s=sql; s=s.replace("\r\n","\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.@R_301_1612@(); } } }
//-------------------------第一种------------------------------------- /// <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("\r\n","\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); }
以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。
c++如何使用第三方库
c++ 中使用第三方库可扩展程序功能并提高开发效率。具体步骤包括:查找和选择库安装库包含头文件链接库好处包括代码重用、功能扩展、维护和更新,但应谨慎选择库并注意许可证条款和定期更新。
C++ 中使用第三方库
在 C++ 中使用第三方库是一种扩展程序功能和提高开发效率的常用方法。第三方库提供了预先编写的代码,可用于执行各种任务,如处理文件、解析数据或建立网络连接。
步骤:
1. 查找和选择库
立即学习“C++免费学习笔记(深入)”;
- 根据您的需求,在网上或 GitHub 等平台上查找合适的第三方库。
- 考虑库的受欢迎程度、文档质量和活跃维护程度。
2. 安装库
- 根据库提供的安装指南,使用包管理器(如 CMake、Conan 或 vcpkg)或手动编译安装库。
- 确保正确设置库的安装路径和环境变量。
3. 包含头文件
- 在您的 C++ 代码中,使用 #include 语句包含库的头文件。
- 头文件通常位于库的安装目录中。
4. 链接库
- 使用编译器选项(如 -l)将库链接到您的可执行文件或动态库。
- 链接器将查找库的实现并将其包含在最终代码中。
实例:
使用 Boost.Filesystem 库
假设您要使用 Boost.Filesystem 库处理文件。以下是步骤:
- 下载并安装 Boost 库。
-
在程序中包含头文件:
#include <boost></boost>
登录后复制 -
链接库:
g++ -o program program.cpp -lboost_filesystem
登录后复制
优点:
- 代码重用:第三方库允许您在开发中重用预先编写的代码,节省时间和精力。
- 扩展功能:库提供了额外的功能,扩展了 C++ 语言的功能。
- 维护和更新:库通常由活跃的维护人员更新和改进,为您提供最新的功能和错误修复。
注意事项:
- 仔细选择库,确保它们符合您的需求并定期维护。
- 理解许可证条款,以避免任何知识产权问题。
- 定期检查库的更新和错误修复,以确保您的程序保持最新状态。
以上就是
flask 从表单中的提交中获取数据(不使用第三方库)
html 文件中的 form 提交后,会发送一个 POST 请求,在需要响应的函数中,使用如下代码。
if request.method == "POST":
username = request.form.get(''username'')
password = request.form.get(''password'')
关于使用java以及jdbc不使用第三方库执行sql文件脚本和java不用jdbc连接数据库的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于angularjs如何使用第三方库?angularjs使用第三方库详解、C#和java中执行sql文件脚本的代码、c++如何使用第三方库、flask 从表单中的提交中获取数据(不使用第三方库)的相关知识,请在本站寻找。
本文标签: