Weka 连接eclipse+mysql
需要:mysql-connector-java-3.1.14-bin.jar
Weka.jar(安装完weka之后有的)
1.需要将mysql-connector-java-3.1.14-bin.jar添加到environment variable(环境变量)中去
2.解压weka.jar到一个目录去(用rar就可以打开):
这里开始要进行编辑:
打开之后,里面的东西如下:
屏幕剪辑的捕获时间: 12/19/2012 11:07 PM
这里,需要"修理"的是:%weka解压的地方%\weka\experiment\DatabaseUtils.props
打开之后,要进行如下修改:
(找出jdbcDriver)
jdbcDriver=com.mysql.jdbc.Driver
屏幕剪辑的捕获时间: 12/19/2012 11:10 PM
以及(找出jdbcURL)
#jdbcURL=jdbc:idb=experiments.prp jdbcURL=jdbc:mysql://localhost:3306/test
屏幕剪辑的捕获时间: 12/19/2012 11:10 PM
这里,test是你放的那个数据库的名称.
修改完之后,就ctrl+s .
3.然后,把jar压回去
cd到weka这个文件夹(是你解压到的地方,可以dir验证.)
dir应该看到的是:
屏幕剪辑的捕获时间: 12/19/2012 11:14 PM
然后,我们执行命令:jar cvf weka.jar weka\*.* org\*.* java_cup\*.*
(意思是,把这个文件夹里的weka,org.以及java_cup文件夹下的东西一起压到这个jar包.jar包名字是什么呢?就是weka.jar c, 创建新的存档.v.生成详细输出到标准输出上.f.指定存档文件名,就是这里的weka.jar)
之后应该是这样的:
屏幕剪辑的捕获时间: 12/19/2012 11:17 PM
然后,这个jar就做好了.
这时候可以替换掉weka安装目录的那个weka.jar,但是前提是把RunWeka.ini最后再加上mysql-connector-java-3.1.14-bin.jar的路径作为classPath(cp就是class path 的意思)
屏幕剪辑的捕获时间: 12/19/2012 11:22 PM
然后,我们可以在weka或者eclipse里面用上这个jar:
weka里:
再替换掉原来的weka.jar(建议备份),就可以对自己的mysql进行操作:
①打开weka之后,单击explorer:
屏幕剪辑的捕获时间: 12/19/2012 11:24 PM
②单击 open DB
屏幕剪辑的捕获时间: 12/19/2012 11:24 PM
就会有这样的东西出现.
这时候,URL要填写的是刚才修改格式那种的格式:
屏幕剪辑的捕获时间: 12/19/2012 11:25 PM
之后,点击
设置用户和密码
屏幕剪辑的捕获时间: 12/19/2012 11:27 PM
可以之后就点击
如果看到的是
屏幕剪辑的捕获时间: 12/19/2012 11:28 PM
很好 只要是true就说明连接成功了.
然后 举个例子:
在
屏幕剪辑的捕获时间: 12/19/2012 11:28 PM
进行输入:
create table test(a int,b varchar(20))
屏幕剪辑的捕获时间: 12/19/2012 11:38 PM
然后,我们可以查看到(这里用的是navicat):
屏幕剪辑的捕获时间: 12/19/2012 11:39 PM
创建出来.
eclipse里:
新建一个project,右键之,找到build path , config之.
Add external jar里面add上我们需要的weka.jar
然后,我们可以进行编辑:
例如:(新建一个叫test的class)
1 import weka.core.Instances; 2 import weka.experiment.InstanceQuery; 3 public class test { 4 5 private static Instances data; 6 7 /** 8 * @param args 9 * @throws Exception 10 */ 11 public static void main(String[] args) throws Exception { 12 // TODO Auto-generated method stub 13 InstanceQuery query = new InstanceQuery(); 14 query.setUsername("nee"); 15 query.setPassword("131442"); 16 query.setQuery("create table another(a int,b varchar(20))"); 17 query.setQuery(" insert into another values(1,'aaa')"); 18 19 20 setData(query.retrieveInstances()); 21 } 22 23 public static Instances getData() { 24 return data; 25 } 26 27 public static void setData(Instances data) { 28 test.data = data; 29 } 30 31 }
运行之后,就会有:
屏幕剪辑的捕获时间: 12/19/2012 11:59 PM
说白了,就是直接sql语句放在字符串里面去``