mldn

时间:2024-03-14 11:40:40编辑:分享君

求五子棋Java代码旁边就注释 让我看的清楚明白一些,要详细的解释和思路

import java.applet.*;
import t.*;
import t.event.*;
import java.applet.Applet;
import t.Color; //这一段import就不说了,下面要用到的就import进来

public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener
//继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法
{
int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子
int intGame_Start=0;//游戏开始标志 0未开始 1游戏中
int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子


哪儿有JAVA版俄罗斯方块游戏开发的视频课程呢?

你好,我这几天也在找这个资源,恰好找到了,俄罗斯方块游戏开发视频,13小节分说,首先是游戏功能演示与说明,然后是游戏中面向对象的分析与设计,还提到图形的数据结构设计与图形的创建,API类的调用,等等,我不说了,还是你自己去看看吧, http://www.hztraining.com/bbs/showtopic-330.aspx,另外还有贪吃蛇的游戏开发视频哟!


java如何连接mySQL数据库?

1.下面代码是使用jdbc直接来链接mysql的操作,方式与SQL SERVER类似,区别在于加载的驱动不同,url的设置也有点区别。2.执行脚本返回的结果,可以看出java成功链接上mysql并获取到返回值3.mysql-connector-java-5.1.26-bin.jar是java链接mysql使用的jar包,与SQL SERVER链接也有专门的jar包,jar包中包含了java链接mysql所用到的函数驱动等等,所有的jar包都是放到web工程lib目录下4.如果工程是整合在ssh下,一般情况下都会有一个properties文件,该文件配置了数据库链接常用的命令,下图是mysql中的配置5.使用spring框架下进行的测试,结果可以成功执行,无论是sql server还是mysql还是其他的数据库,基本功能都一样,只是语法结构有所区别,java在调用的过程中大部分功能只要切换了数据库链接命令就可以公用,如果系统架构设计的足够好,切换数据库的时候,应用程序是不用调整就能兼容的

java中怎么连接mysql数据库

java链接MySQL数据库和链接其他数据库, 基本都是一样的套路准备工作:1: 数据库驱动. 导入项目2: 启动MySQL服务编码工作: // 1.注册驱动Class.forName("com.mysql.jdbc.Driver");// 2.连接数据库Connection conn = DriverManager.getConnection(DB_URL, NAME, PSWD); //数据库地址,用户名,密码// 3.准备执行sql语句 Statement stat = conn.createStatement();


java 压缩文件夹,请问有何问题,始终压缩失败

package com.emis.util;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

import java.io.*;

/**
* User: zhong.xu
* Date: 2009-3-5
* Time: 9:27:45
*
* 将文件或文件夹打包成ZIP文件
*
*/
public class emisZipUtil extends ZipOutputStream {

public emisZipUtil(OutputStream outputStream) {
this(outputStream, defaultEncoding, defaultLevel);
}

public emisZipUtil(String file) throws IOException {
this(new FileOutputStream(new File(file)), defaultEncoding, defaultLevel);
}

public emisZipUtil(File file) throws IOException {
this(new FileOutputStream(file), defaultEncoding, defaultLevel);
}

/**
* 统一调用的构造函数
*
* @param outputStream 输出流(输出路径),*.zip
* @param encoding 编码
* @param level 压缩级别 0-9
* */
public emisZipUtil(OutputStream outputStream, String encoding, int level) {
super(outputStream);

buf = new byte[1024];//1024 KB缓冲

if (encoding != null || !"".equals(encoding))
this.setEncoding(encoding);

if (level 9) level = 7;
this.setLevel(level);

comment = new StringBuffer();
}

public String put(String fileName) throws IOException {
return put(fileName, "");
}

/**
* 加入要压缩的文件或文件夹
*
* @param fileName 加入一个文件,或一个文件夹
* @param pathName 生成ZIP时加的文件夹路径
* @return fileName
* */
public String put(String fileName, String pathName) throws IOException {
File file = new File(fileName);

if(!file.exists()) {
comment.append("发现一个不存在的文件或目录: ").append(fileName).append("\n");
return null;
}

//递归加入文件
if (file.isDirectory()) {
pathName += file.getName() + "/";
String fileNames[] = file.list();
if (fileNames != null) {
for (String f : fileNames) put(fileName + "\\" + f, pathName);
}
return fileName;
}

fileCount++;
//System.out.println(fileCount + " = " + fileName);
//System.out.println("file = " + file.getAbsolutePath());

BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(file));
out = new BufferedOutputStream(this);
if (userFullPathName)
pathName += file.getPath();
this.putNextEntry(new ZipEntry(pathName + file.getName()));
int len;
//BufferedOutputStream会自动使用 this.buf,如果再使用in.read(buf)数据会错误
while ((len = in.read()) > -1) out.write(len);
} catch (IOException ex) {
comment.append("一个文件读取写入时错误: ").append(fileName).append("\n");
}

if (out != null) out.flush();
if(in != null) in.close();

this.closeEntry();
return file.getAbsolutePath();
}

public String[] put(String[] fileName) throws IOException {
return put(fileName, "");
}

public String[] put(String[] fileName, String pathName) throws IOException {
for (String file : fileName)
put(file, pathName);
return fileName;
}

/**
* 压缩的文件个数
*
* @return int
* */
public int getFileCount() {
return this.fileCount;
}

//测试
public static void main(String[] args) {
try {
java.util.Date d1 = new java.util.Date();
emisZipUtil util = new emisZipUtil("C:\\emisZipUtil.zip");
//util.buf = new byte[1024*2]; //可以指定缓存
util.comment.append("报表批量下载!\n\n");

util.put(new String[]{"C:\\temp","C:\\emis","C:\\wwwroot\\smepos_cn 路径.txt"});
util.put("D:\\JQuery\\Jquery 1.2.6 源码分析\\jquery1.2.6-源码文档-cn.js");
util.put("C:\\wwwroot\\smepos_cn\\版本更新说明.doc","doc\\");
util.put("E:\\Images\\16012991.jpg E:\\Images\\16012993.jpg E:\\Images\\16012995.jpg E:\\Images\\16012985.jpg E:\\Images\\16012987.jpg E:\\Images\\16012989.jpg".split(" "),"IMG");
util.put("C:\\wwwroot\\smepos_cn\\版本更新说明2.doc");
util.put("C:\\wwwroot\\smepos_cn2");
util.put("C:\\wwwroot\\smepos_cn\\report_out\\pre_print\\ROOT\\5AROOT中分类 2009-03-04 17-08-14 1072940375_1.xls");
util.comment.append("\n共成功压缩文件: ").append(util.getFileCount()).append(" 个!");
util.setComment(util.comment.toString());
util.close();
java.util.Date d2 = new java.util.Date();
System.out.println("used time = " + (d2.getTime() - d1.getTime()));
} catch (IOException e) {
e.printStackTrace();
}
}

//压缩级别:0-9
public static int defaultLevel = 7;
//编码,简体:GB2312,繁体:BIG5
public static String defaultEncoding = "GB2312";
//压缩时用全路径,会生成对应的目录,false:不带路径,只有文件名
public static boolean userFullPathName = false;
//注释
public StringBuffer comment;

private int fileCount = 0;
}


JAVA压缩文件问题

import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.txt") ; // 定义要压缩的文件
File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称
InputStream input = new FileInputStream(file) ; // 定义文件的输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
zipOut.close() ; // 关闭输出流
}
};
问题(1)我想问下 zipOut.putNextEntry(new ZipEntry(file.getName())) ; 这段程序是什么意思这段程序中的file.getName() 这个getName()从哪里跑出来的没有这个方法啊。
问题(2)
zipOut.setComment("www.mldnjava.cn") ; // 设置注释

这段程序是什么意思啊 ?有什么用?


java怎样将读取数据写入数据库

Java可以使用JDBC对数据库进行读写。JDBC访问一般分为如下流程:一、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ;} 成功加载后,会将Driver类的实例注册到DriverManager类中。 二、提供JDBC连接的URL 连接URL定义了连接数据库时的协议、子协议、数据源标识。 书写形式:协议:子协议:数据源标识 协议:在JDBC中总是以jdbc开始 子协议:是桥连接的驱动程序或是数据库管理系统名称。数据源标识:标记找到数据库来源的地址与连接端口。 例如:(MySql的连接URL) jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbkuseUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。 三、创建数据库的连接 要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。 使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。 例如://连接MySql数据库,用户名和密码都是root String url = "jdbc:mysql://localhost:3306/test" ;String username = "root" ; String password = "root" ; try{ Connection con =DriverManager.getConnection(url , username , password ) ;}catch(SQLException se){ System.out.println("数据库连接失败!");se.printStackTrace() ;} 四、创建一个Statement 要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型: 1、执行静态SQL语句。通常通过Statement实例实现。 2、执行动态SQL语句。通常通过PreparedStatement实例实现。 3、执行数据库存储过程。通常通过CallableStatement实例实现。 具体的实现方式:Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ; 五、执行SQL语句 Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute 1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。具体实现的代码: ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; int rows = stmt.executeUpdate("INSERT INTO ...") ; boolean flag = stmt.execute(String sql) ; 六、处理结果 两种情况: 1、执行更新返回的是本次操作影响到的记录数。 2、执行查询返回的结果是一个ResultSet对象。 ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。 使用结果集(ResultSet)对象的访问方法获取数据: while(rs.next()){ String name = rs.getString("name") ; String pass = rs.getString(1); // 此方法比较高效(列是从左到右编号的,并且从列1开始)} 七、关闭JDBC对象操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反: 1、关闭记录集 2、关闭声明 3、关闭连接对象 if(rs != null){ // 关闭记录集try{rs.close() ;}catch(SQLException e){e.printStackTrace() ;}} if(stmt != null){ // 关闭声明try{stmt.close() ;}catch(SQLException e){e.printStackTrace() ;}} if(conn != null){ // 关闭连接对象try{conn.close() ;}catch(SQLException e){e.printStackTrace() ;}}扩展资料样例package first;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class lianjie {public static void main(String[] args) {Runnable runnable = new Runnable() { public void run() { //声明Connection对象Connection con;//驱动程序名String driver1 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//URL指向要访问的数据库名String url1 = "jdbc:sqlserver://IP地址和端口号;DateBaseName=数据库名";//MySQL配置时的用户名String user1 = "user";//MySQL配置时的密码String password1 = "user";//声明Connection对象Connection con1;//驱动程序名String driver2 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//URL指向要访问的数据库名String url2 = "jdbc:sqlserver://IP地址和端口号;DateBaseName=数据库名";//MySQL配置时的用户名String user2 = "user";//MySQL配置时的密码String password2 = "user";//遍历查询结果集try {//加载驱动程序Class.forName(driver1);//1.getConnection()方法,连接MySQL数据库!!con = DriverManager.getConnection(url1,user1,password1);if(!con.isClosed())System.out.println("成功连接到数据库!");try {//加载驱动程序Class.forName(driver2);//1.getConnection()方法,连接MySQL数据库!!con1 = DriverManager.getConnection(url2,user2,password2);if(!con1.isClosed())System.out.println("成功连接到数据库!");//2.创建statement类对象,用来执行SQL语句!!Statement statement = con.createStatement();//要执行的SQL语句String sql = "use 数据库名 select * from 表名";//3.ResultSet类,用来存放获取的结果集!!ResultSet rs = statement.executeQuery(sql);//要执行的SQL语句String sql1 = "use tiantiana insert into Table_1(tiantian,qiqi,yuyu)VALUES(?,?,?)";//3.ResultSet类,用来存放获取的结果集!!PreparedStatement pst = con1.prepareStatement(sql1); System.out.println ("tiantian"+"/t"+"qiqi"+"/t"+"yuyu");while(rs.next()){ System.out.print(rs.getString(1));System.out.print(rs.getString(2));System.out.print(rs.getString(3));pst.setString(1,rs.getString(1));pst.setString(2,rs.getString(2));pst.setString(3,rs.getString(3));pst.executeUpdate(); }pst.close();rs.close();//2.创建statement类对象,用来执行SQL语句!!Statement statement1 = con.createStatement();//要执行的SQL语句String sql2 = "use 数据库名 select * from 表名";//3.ResultSet类,用来存放获取的结果集!!ResultSet rs1 = statement1.executeQuery(sql2);//要执行的SQL语句String sql3 = "use tiantiana insert into Table_2(tiantian1,qiqi1,yuyu1)VALUES(?,?,?)";//3.ResultSet类,用来存放获取的结果集!!PreparedStatement pst1 = con1.prepareStatement(sql3);System.out.println ("tiantian1"+"/t"+"qiqi1"+"/t"+"yuyu1");while(rs1.next()){System.out.print(rs1.getString(1));System.out.print(rs1.getString(2));System.out.print(rs1.getString(3));pst1.setString(1,rs1.getString(1));pst1.setString(2,rs1.getString(2));pst1.setString(3,rs1.getString(3));pst1.executeUpdate();}//关闭链接rs1.close();pst.close();con1.close();con.close();} catch(ClassNotFoundException e) { //数据库驱动类异常处理System.out.println("对不起,找不到驱动程序!"); e.printStackTrace(); } catch(SQLException e) {//数据库连接失败异常处理e.printStackTrace(); }catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{System.out.println("数据库数据成功获取!!");}} catch(ClassNotFoundException e) { //数据库驱动类异常处理System.out.println("对不起,找不到驱动程序!"); e.printStackTrace(); } catch(SQLException e) {//数据库连接失败异常处理e.printStackTrace(); }catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{System.out.println("数据库数据成功获取!!");} } }; ScheduledExecutorService service = Executors .newSingleThreadScheduledExecutor(); // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间 service.scheduleAtFixedRate(runnable, 10, 60*2, TimeUnit.SECONDS); }}参考资料 百度百科——Java数据库连接

java 连接数据库mysql的语句怎么写 详细点

总结起来就是加载驱动,建立连接。
import java.sql.*;

public class DB {
public static Connection getConn() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/shopping?user=root&password=123456");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

return conn;
}

public static PreparedStatement prepare(Connection conn, String sql) {
PreparedStatement pstmt = null;
try {
if(conn != null) {
pstmt = conn.prepareStatement(sql);
}
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;
}

public static PreparedStatement prepare(Connection conn, String sql, int autoGenereatedKeys) {
PreparedStatement pstmt = null;
try {
if(conn != null) {
pstmt = conn.prepareStatement(sql, autoGenereatedKeys);
}
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;
}

public static Statement getStatement(Connection conn) {
Statement stmt = null;
try {
if(conn != null) {
stmt = conn.createStatement();
}
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}

/*
public static ResultSet getResultSet(Connection conn, String sql) {
Statement stmt = getStatement(conn);
ResultSet rs = getResultSet(stmt, sql);
close(stmt);
return rs;
}
*/

public static ResultSet getResultSet(Statement stmt, String sql) {
ResultSet rs = null;
try {
if(stmt != null) {
rs = stmt.executeQuery(sql);
}
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}

public static void executeUpdate(Statement stmt, String sql) {
try {
if(stmt != null) {
stmt.executeUpdate(sql);
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public static void close(Connection conn) {
try {
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public static void close(Statement stmt) {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}


谁能给我详细的解释一下JNDI,JTA,JMS都是什么啊?

JNDI
Java术语

英文全称是:Java Naming and Directory Interface

术语解释:一组帮助做多个命名和目录服务接口的API。

JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。

JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JNDI程序包:
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
}
catch(NamingException ne){
...
}
JNDI与JMS:
消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
代码示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
...
}
catch(NamingException ne){
...
}
访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
Attribute attr =

directory.getAttributes(personName).get("email");
String email = (String)attr.get();
通过使用JNDI让客户使用对象的名称或属性来查找对象:
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
浏览命名空间:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}

参考资料:
http://java.sun.com/products/jndi/examples.html
http://java.sun.com/products/jndi/serviceproviders.html

常用的JNDI操作:
常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration list(String sName);
代码示例:重新得到了名称、类名和绑定对象。
NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}

JTA :
JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。
要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。例如:
utx.begin();

// ...

DataSource ds = obtainXADataSource();

Connection conn = ds.getConnection();

pstmt = conn.prepareStatement("UPDATE MOVIES ...");
<br


上一篇:南京青奥会形象大使

下一篇:chocolate love歌词