java中如何调用mysql.exe文件

Yujlyjl 2004-09-22 08:41:46
本人编写一程序,打算通过java中如何调用mysql.exe文件创建数据库等。连接等语句都没问题,但无法得到mysql.exe的提示信息。进而无法进行相关操作。问题如下:
1:mysql.exe的运行机制是什么(本人可以java通过调用其他exe文件)?
2:如何得到mysql.exe显示的提示信息?
...全文
365 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Yujlyjl 2004-09-29
oldblue(jimmey) :
当我运行以下语句
C:\mysql\bin>mysql -uroot -pmysqlyjl
后就死掉了。
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-29
oldblue(jimmey) :程序运行结果
文本框里输入为:c:\mysql\bin\mysqldump -uroot -pmysyjl yjl>c:\yjl1.sql
显示结果为:
-- MySQL dump 10.4

--

-- Host: localhost Database: yjl>c:\yjl1.sql

-- ------------------------------------------------------

-- Server version 5.0.0-alpha-nt



/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT, CHARACTER_SET_CLIENT=utf8 */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=NO_AUTO_VALUE_ON_ZERO */;

对不起,我又换了个程序调用,导出SQL语句。
这个程序单步调试可以生成文件,运行就不能(错误提示为:process has not exited)。
你的程序写的很好,可没有生成文件。
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-29
谢谢。我一定试试
  • 打赏
  • 举报
回复
三合一 2004-09-29
我的程序你运行起来看,在文本框里就能显示结果
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-24
各位的方法我都用了,实在不行。还请指教。。。
  • 打赏
  • 举报
回复
wenming168 2004-09-24
Runtime.getRuntime().exec("路径加名称");
  • 打赏
  • 举报
回复
三合一 2004-09-24
while ( (i = is.read()) != -1) {
this.jTextArea1.append(String.valueOf( (char) i));
}
mysql5也可以
  • 打赏
  • 举报
回复
victorylj 2004-09-23
关注,学习
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-23
注:我用的是MYSQL 5。是否有影响。我用此程序调用C编写的EXE文件完全好用,是否与mysql。exe的设计机制有些关系。
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-23
oldblue(jimmey) 谢谢。
我看过了代码主要是: Process p = Runtime.getRuntime().exec(cmd);
InputStream is = p.getInputStream();
OutputStream os = p.getOutputStream();
我用后直接打印is的结果是-1(没有得到输出内容)。用int i = p.exitValue();结束的结果是:1。
我的用法和你的差不多。主要的语句如下:
String cmd = this.getMysqlPath()+" -u "+ this.getUserID();//+ " -p " + this.getPass();
System.out.println(cmd);
Process process = Runtime.getRuntime().exec(cmd);
InputStream in=process.getInputStream();
OutputStream out =process.getOutputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
OutputStreamWriter write=new OutputStreamWriter(out);
System.out.println(process);//能的到地址
System.out.println(reader.readLine().trim());//结果为NULL。
// 程序在此停留是由于调用reader.readLine()的缘故
int i = process.exitValue();
System.out.println(i);
  • 打赏
  • 举报
回复
weepp 2004-09-23
runtime;
exec();
  • 打赏
  • 举报
回复
三合一 2004-09-23
可以得到的,给你代码
package test;

import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class RunFrame
extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JButton jButton2 = new JButton();
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
JScrollPane jScrollPane1 = new JScrollPane();
BorderLayout borderLayout2 = new BorderLayout();
JTextArea jTextArea1 = new JTextArea();
public RunFrame() {
try {
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}

private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
this.getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
jButton2.setText("Run");
jButton2.addActionListener(new RunFrame_jButton2_actionAdapter(this));
jLabel1.setText("Command");
jTextField1.setPreferredSize(new Dimension(220, 22));
jPanel2.setLayout(borderLayout2);
jPanel1.add(jLabel1);
jPanel1.add(jTextField1);
jPanel1.add(jButton2);
jPanel1.setPreferredSize(new Dimension(10, 40));
this.getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);
jPanel2.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTextArea1);
jScrollPane1.setPreferredSize(new Dimension(400,300));
}

public static void main(String[] args) {
RunFrame runframe = new RunFrame();
runframe.setDefaultCloseOperation(3);
runframe.pack();
runframe.show();
}

public void jButton2_actionPerformed(ActionEvent e) {
String cmd = this.jTextField1.getText();
System.out.println("runcmd="+cmd);
if(cmd != null && !cmd.trim().equals("")){
try {
Process p = Runtime.getRuntime().exec(cmd);
InputStream is = p.getInputStream();
OutputStream os = p.getOutputStream();
int i = 0;
while ( (i = is.read()) != -1) {
this.jTextArea1.append(String.valueOf( (char) i));
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
}

class RunFrame_jButton2_actionAdapter
implements ActionListener {
private RunFrame adaptee;
RunFrame_jButton2_actionAdapter(RunFrame adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}

}
  • 打赏
  • 举报
回复
Yujlyjl 2004-09-23
谢谢各位:
我用的是RUNTIME,连接没有错误,用:[mysql -u 用户 -p]语句打开后就在等待输出结果的语句上,无法得到输出的内容,因而不能进行分析和以下操作。
我的想法是:通过mysql程序进行数据库的操作(创建数据库,表等)。所以不能直接打开数据库。想进入他的命令提示状态。
  • 打赏
  • 举报
回复
三合一 2004-09-22
同意楼上观点:
直接用mysql不是很通用的方法
不过你可以用以下命令尝试:
mysql -u 用户 -p 密码 -e "use 数据库;命令(如:select * from 表)";
当然,你需要分析输出的结果
  • 打赏
  • 举报
回复
Ronanljy 2004-09-22
http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?forum=8&thread=7168
  • 打赏
  • 举报
回复
dropship 2004-09-22
可以啊,java运行普通应用程序的命令就行,runtime就可以
  • 打赏
  • 举报
回复
craks 2004-09-22
难道不能用jdbc去做这些事
他是输出到STDOUT, STDIN, STDERR上的,java恐怕没法截获吧
  • 打赏
  • 举报
回复
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2004-09-22 08:41
社区公告
暂无公告