`
xx521
  • 浏览: 27096 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java 与动态语言的一点东西。

    博客分类:
  • java
阅读更多

推荐下Js实现Sql 语句  探索莫坛

 

package com.ctaoyu.framework.module_all.util.js;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * 
 * Js編譯引擎
 * 
 * @author 彭秦進 rudys.eva@gmail.com
 * 
 * @version 1.0
 * 
 */
public class JSUtil {
	public static ScriptEngine jsEngine;

	static {
		initEngine();

	}

	/**
	 * 初始化引擎
	 * 
	 * @return
	 */
	private static void initEngine() {
		// create a script engine manager
		ScriptEngineManager factory = new ScriptEngineManager();
		/**
		 * create engine by name ScriptEngine engine = factory.getEngineByName
		 * ("JavaScript"); // create engine by name ScriptEngine engine =
		 * factory.getEngineByExtension ("js"); // create engine by name
		 * ScriptEngine engine = factory.getEngineByMimeType
		 * ("application/javascript");
		 * 
		 */
		jsEngine = factory.getEngineByName("JavaScript");
		// return engine;
	}

	/**
	 * 解释代码
	 * 
	 * @param jsString
	 * @throws Exception 
	 */
	public static void runEngine(String jsString) throws Exception {
		// TODO Auto-generated method stub
		JsDataSource sqltool = new JsDataSource();
		jsEngine.put("sqltool", sqltool);
		jsEngine.eval(jsString);
	}

	/**
	 * 
	 * @param args
	 */

	public static void main(String[] args) {
		try {
			runEngine("");
		} catch (ScriptException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 

package com.ctaoyu.framework.module_all.util.js;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.ctaoyu.framework.module_all.util.ds.ConnectFactory;

/**
 * 
 * DataSource 供Js使用或其他腳本語言使用
 * 
 * @author 彭秦进 rudys.eva@gmail.com
 * 
 * @version 1.0
 * 
 */
public class JsDataSource {

	/**
	 * 數據庫連接
	 */
	private Connection conn;

	private ResultSet resultSet;

	/**
	 * @return the resultSet
	 */
	public ResultSet getResultSet() {
		return resultSet;
	}

	/**
	 * @param resultSet
	 *            the resultSet to set
	 */
	public void setResultSet(ResultSet resultSet) {
		this.resultSet = resultSet;
	}

	/**
	 * @return the conn
	 */
	public Connection getConn() {
		return conn;
	}

	/**
	 * @param conn
	 *            the conn to set
	 */
	public void setConn(Connection conn) {
		this.conn = conn;
	}

	/**
	 * open connection
	 * 
	 * @throws Exception
	 */
	private void openConnect() throws Exception {
		this.conn = ConnectFactory.currentConnect();
	}

	/**
	 * close connection
	 * 
	 * @throws Exception
	 */
	public void closeConnect() throws Exception {
		this.resultSet.close();
		this.conn.close();
		ConnectFactory.closeConnect();
	}

	/**
	 * 執行Sql語句
	 * 
	 * @param sql
	 * @throws Exception
	 */
	public void doSql(String sql) throws Exception {
		this.setResultSet(getConn().prepareStatement(sql).executeQuery());
	}

	/**
	 * 
	 * 取下一條記錄
	 * 
	 * @throws SQLException
	 * 
	 */
	public int resultSetNext() throws SQLException {
		int flag;
		boolean nextB = getResultSet().next();
		if (nextB) {
			flag = 1;
		} else {
			flag = 2;
		}
		return flag;
	}

	/**
	 * 去行記錄
	 * 
	 * @param columnName
	 * @return
	 * @throws SQLException
	 */
	public String getString(String columnName) throws SQLException {
		return getResultSet().getString(columnName);
	}

	/**
	 * JsDataSource構造函數
	 * 
	 * @throws Exception
	 */
	public JsDataSource() throws Exception {
		openConnect();
	}

}

 

 

JavaScript 脚本:

sqltool.dosql("select name from person");
while(sqltool.resultSetNext()==1){
	println(sqltool.getString(name));
}
sqltool.closeConnect();

 

分享到:
评论

相关推荐

    分享Java相关的东西 - Java安全漫谈笔记相关内容.zip

    JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...

    计算机、java、j2ee文献翻译

    Java语言假定你只想进行面向对象编程,这意味着在开始之前,你需要将思维模式转向面向对象的世界(除非你已经在那里)。这种初始努力的好处是可以使用一种比许多其他OOP语言更容易学习和使用的语言进行编程。 在...

    Java学习指南1

    首先,要认识到Java语言的重要性和它在现代软件开发中的地位。Java以其“一次编写,到处运行”的理念,成为了最受欢迎的编程语言之一。不仅如此,Java也在企业级应用开发、移动应用开发(特别是Android平台)等领域...

    First read Head.First.Java.2nd.Edition.Dec.2007.pdf

    Ken Arnold(曾经是Sun Microsystems的高级工程师,也是Java语言的合著者之一)认为这本书快速、幽默、有趣且富有吸引力,学习者在学习过程中要小心,因为可能会在不知不觉中真正学到东西。Scott McNealy(Sun ...

    Java编写中容易搞错的一些东西.rar

    2. **数据类型转换**:Java是强类型语言,数据类型之间转换需要注意是否兼容。比如,将一个较大的数值类型转换为较小的数值类型(如int转byte)时,可能会丢失数据。同时,非数值类型与数值类型之间的转换需要特别...

    根据地址返回经纬度java版

    百度地图API支持多种语言,其中Java版本非常适合后端开发或服务器端的数据处理。 #### 二、经纬度与地址转换 **经纬度**是地球上任意一点的位置坐标。经纬度由两个数字组成:**经度**(longitude)和**纬度**...

    java实习生个人总结.doc

    实习生认为java是一门强大的面向对象的编程语言,具有跨平台型和嵌入性强的特点。 实习生在实训中遇到了许多困难,但通过老师的指导和自己的努力,顺利地化解了一道道的障碍,并最终掌握了java的根底知识。此外,...

    小白都能学会的Java文档.pdf

    通过上述知识点,我们可以看到Java语言的面向对象特性不仅仅是概念层面的东西,而是真正贯彻在语言的设计和应用中,为解决复杂问题提供了强大的工具和灵活的手段。对于初学者而言,理解这些概念并学会灵活运用,是...

    java_tutorial:创建Java项目以记录我作为Java开发人员的进度

    在这种情况下,对我们而言最重要的功能是您可以使用任何想要简化的编程语言或多服务器设计入门(此外,如果您像我一样,则至少需要安装一些更好的东西)。 1-1_w3resource_basic_5 要执行此命令,请使用docker run ...

    PERL语言编程

    当然这些东西都是让我们可能处理难的问题的东西,而且很多其它语言也可以做到这一点。Perl 之所以成为 Perl 是因为它从来不会因为保持简单事情简单化而丢失其他方面的特性。 <br/>因为 Perl 既强大又好用,所以...

    yahaa:尝试用稍微好一点的东西包装 Vera luaupnp api。 另一个家庭自动化 API

    标签“Java”说明了该项目是用Java语言编写的。Java是一种广泛使用的面向对象的编程语言,因其跨平台兼容性和丰富的库支持而被选为实现家庭自动化API的理想选择。使用Java,开发者可以利用其强大的网络和多线程功能...

    积分java源码-match-block:[ABANDONED]模式匹配块作为值

    积分java源码匹配块 注意:该项目已被放弃。 模式匹配块作为值。 ![数据所有的东西]() 将抽象转化为一流的值使我们能够对它们进行抽象和组合,并且通常会产生概念上更简单的模型。 一流的东西一直是 Clojure 的一个...

    不用静态类型函数式编程语言的十大理由

     这里要澄清一点,我指的这种静态类型函数式编程语言,包括那种类型推断或者静态缺省等等。实际上,是Haskell和ML—family(包括Ocaml和F# )  理由一:不想跟潮流  像大多数程序员一样,我怀旧且讨厌学习新...

    Java版水果管理系统源码-GitU:一个基于Java的gitGUI客户端来完成JavaScool项目

    Java在桌面应用开发这方面私以为已经失败了,JDK10以后oracle也舍弃了JavaFx,交由开源社区开发,现在应该是叫OpenFx,在开发中感觉JavaFx没有很多人使用,相关文档和教程非常少,中文更少,但是我还是写了一点东西...

    java寝室管理设计源码-Beryl:用于构建实时图形应用程序的Java框架

    在这个项目中,我学习了很多关于图形编程的东西,在我学习的过程中实现了它们。 我创建 Beryl 的主要动机是: Java 具有创建此类程序的巨大潜力。 尽管它通常比 C/C++ 慢,但在某些情况下它可以与它们的性能相当甚至...

    软件测试面试题总结

    计算机网络(tcp/ip详解卷1、谢希仁的计算机网络)、数据库(sql必知必会、数据库案例应用)、操作系统(现代操作系统、清华的公开课)、数据结构和算法(剑指offer、大话数据结构、leetcode只做了一点、还有牛客上...

    UDP与TCP协议通信

    自已写的通信功能,两个机器互发信息,东西虽小,技术却一点没少,新手学习很方便

    精品Kotlin文档项目资源,分享出来.zip

    但是请你不要放弃对这门语言的学习,我也是一点一点学习过来的,你在学习过程中遇到的坑,可能我也遇到过。我非常欢迎各位 一起学习、一起探索。让我们共同进步。 所以,我会根据自身的编程经验去写完整个Kotlin...

    Python从入门到精通

    由于谱系相同,Java语言和C#具有内置类型也不足为奇。这意味着在C程序中,可以编写int i = 100来创建和初始化整型变量。在Java和C#中,此方法也是可能的,而且使用它们的自动装箱功能,在需要时这两种语言还可以把...

    Java编程获取经纬度之间距离的方法

    通过Haversine公式可以在球面上进行两点间距离的近似计算,而Java语言提供了强大的数学库来支持这类计算。通过将这些计算封装成工具类,可以方便地在不同的应用场景下复用代码,提高开发效率。 需要注意的是,在...

Global site tag (gtag.js) - Google Analytics