一个定时往mysql写数据的java类的设计与实现
2017-07-08 23:30
302 查看
我自己都感觉这个标题好像论文。(××××××××的设计与实现)
因为最近在尝试写《商人》网路游戏的服务端,要有时间定时循环执行,要有往数据库写数值。然后玩家的手机上微信,从数据库下载数据,实现游戏玩起来。
所以这篇文章讲了我昨天的进展,定时存数据。
我有两个文件,实际上我也是为了将来维护方便,才分开来写的。
mainGame.java 这个文件是主功能,
gameEnterFrame.java 这个文件是定时循环功能。
他们都隶属于game包中。
先看第一个mainGame.java的代码:
代码不多,就是启动后,运行一次,gameEnterFrame.
再贴出下面的代码:
定时循环执行的部分代码较多,写好后点击运行,就可以看到打印出来的数据啦。
祝你成功!
因为最近在尝试写《商人》网路游戏的服务端,要有时间定时循环执行,要有往数据库写数值。然后玩家的手机上微信,从数据库下载数据,实现游戏玩起来。
所以这篇文章讲了我昨天的进展,定时存数据。
我有两个文件,实际上我也是为了将来维护方便,才分开来写的。
mainGame.java 这个文件是主功能,
gameEnterFrame.java 这个文件是定时循环功能。
他们都隶属于game包中。
先看第一个mainGame.java的代码:
package game; import game.gameEnterFrame;//把定时循环类导入进来,一会要用。 public class mainGame { //游戏运行,最主要的权限最高的main方案,无返回值。只要运行,就会先运行main。 //static意思是 我是绝对的,唯一的,至高无上的,不允许重名的。只要提到这个main名字就一定是我,的意思。 //public 意思是对外公开,只要你在别的地方导入了mainGame类,就可以执行mainGame类下的public的功能。 public static void main(String[]args){ //我想要一个定时循环类,起名叫aa吧,它是一个全新的定时循环类。 gameEnterFrame aa = new gameEnterFrame(); //现在执行aa的start功能。里面有啥看下一文件的代码。 aa.start(); System.out.println("GameStart"); } }
代码不多,就是启动后,运行一次,gameEnterFrame.
再贴出下面的代码:
package game; //这些导入的包你可以不用知道他们是干嘛的,因为只要使用MyExclipse软件敲代码,就会提示你,帮你自动添加导入,而且自动加的非常准确。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import java.util.Timer;//导入定时器类 import java.util.TimerTask;//导入定时任务类 //由于gameEnterFrame是继承自TimerTask类的。 //TimerTask类有这么一个关键的功能叫做run,是前人们已经写好的功能了。也是必须有的功能。只要继承了TimerTask的类一自动执行,就自动运行run里面的动作。 public class gameEnterFrame extends TimerTask { //声明内部使用一个数据库链接,起名conn,这个conn酌情改代码 private Connection conn; //声明内部使用一个数据库驱动地址,不知何用,固定用法,不写就报错。这个地方酌情改代码 private String JDBC_DRIVER = "com.mysql.jdbc.Driver"; //声明内部使用mysql数据库的网络IP+端口+链接的数据库名字,这个地方酌情改代码 private String DB_URL = "jdbc:mysql://192.168.0.11:3306/gmbusiness"; //声明内部使用连接数据库的用户名,这个地方酌情改代码 private String user = "root"; //声明内部使用连接数据库的密码,这个地方酌情改代码 private String password = "root"; //我需要一个时间量,起名叫startdate吧,它是一个全新的时间量,他的值是现在这一刻的时间。 Date startdate = new Date(); //我需要一个定时器,起名叫itimer吧,它是一个全新的定时器。 private Timer itimer = new Timer(); public void start(){ //schedule英文翻译为“日程安排”,是定时器类下属的功能方案。在我们程序中是最关键的功能,后面有好几种参数情况,其中三个参数时候代表(做啥方案,啥时间开始,多少毫秒后再做), //要注意的是java里面的时间是单独的数据类型,区别于浮点数、整数、字符串类型。 //所以需要声明一下开始时间。我觉得使用“现在”作为开始时间最合适。这样每次程序运行时就立即开始。 //所以我在上面声明了一个startdate。接着让任务每隔2秒钟运行一次。 itimer.schedule(this, startdate, 2000); //你可能要问了,this是啥?this意思是当下方案。这里指gameEnterFrame。 } //下面来看看这个自动运行都运行了啥动作 public void run() { float n = (float) 1.22;//我瞎写的一个1.22数,后面会被修改为随机数。这里不必较真。 n = (float) Math.random();//我需要生成随机数,一会往数据库里面写。 System.out.println("Server make a new number : " +n );//把这个数打印出来方便我看。 //我发现链接数据库大家都爱用try。因为网络不稳定就会连不上,但不能崩了程序。 try { //固定用法,连接数据库。为的是后面往数据里写数 Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL,user,password); //准备往数据库里写啥值,引号中是mysql语句。 //java并不是直接 4000 往mysql里面写数据,而且先打个招呼,传达一下即将要填写的数在哪行哪列,具体的数则是留出问号,再让程序做填空题。 String sql = "insert into goods_price (price) values (?)"; //声明一个预处理语句叫rs,是个空的。 PreparedStatement rs = null; //先把格式填写进去,等着填空。 rs = conn.prepareStatement(sql); //而且据说每次只能写一个值,写入一个float类型的数值,在第一个位上把n的值(刚生的随机数)写进去。 rs.setFloat(1,n); //写完了更新吧 rs.executeUpdate(); //关闭数据库操作通道 rs.close(); //关闭数据库连接,固定用法 conn.close(); //以下到代码最后是MyEclipse自动帮我写的。 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }
定时循环执行的部分代码较多,写好后点击运行,就可以看到打印出来的数据啦。
祝你成功!
相关文章推荐
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- 设计并实现用于ASP.NET一个通用的数据存取层应用程序 原作者 Paul Abarham 翻译 cwxiao888@163.com
- 设计、实现一个 Asp.Net 应用的通用数据存取层(二)
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- 一个将数据文件转换成excel文件打印的java实现方法的代码片断(Struts+poi)
- 设计一个学生类,其中包含学号、姓名、成绩等数据成员,创建学生对象并且倒入到文件file.txt,然后由文件读取到另一个学生对象并输出,试编程实现。
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- 一个简单的php实现的MySQL数据浏览器
- java 实现查询一个数据表中记录总数
- 一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
- 一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
- 将后台数据读取到前台的EXCEL文件中去,用javascript实现,asp.net,javacript(发一个原创)
- MySQL中 查出一个数据库的所有表名 及 Java 实现
- 用C++设计一个不能被继承的类实现java final的作用
- java代码实现mysql数据备份与恢复
- 设计、实现一个 Asp.Net 应用的通用数据存取层
- 设计、实现一个 Asp.Net 应用的通用数据存取层(二)
- 一个通用的单元测试框架的思考和设计04-实现篇-自动管理测试数据
- How:What:Java 中实现readLine()(逐行读取数据)的一个实例
- Java+MySql+Servlet+Ajax实现单态登陆,说白了就是一个账号只能在一个浏览器中登陆。