2013-07-31 146 views
0

我一直在学习java约3周。我想用java连接mysql,现在我正在尝试。但有一个问题。我已经为我的Ubuntu安装了php,apache,mysql三个。我可以从port 80达到phpmyadmin。我认为连接数据库时存在问题,这就是为什么我说端口。第一次尝试mysql连接问题

这里是我的表:

+-------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+-------------+------+-----+---------+----------------+ 
| id | int(2)  | NO | PRI | NULL | auto_increment | 
| name | varchar(32) | NO |  | NULL |    | 
+-------+-------------+------+-----+---------+----------------+ 

这里是Java代码:

import java.sql.DriverManager; 
import java.sql.Statement; 

public class Main { 

    public static void main(String args[]) { 
     try { 

      java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:80/test", "root", "1"); 

      Statement state = (Statement) conn.createStatement(); 
      String name = "try"; 
      state.executeUpdate("INSERT INTO deneme (name) VALUES (" + name + ")"); 

     } catch (Exception e) { 
     } 
    } 
} 

此代码运行约20秒,并返回BUILD SUCCESSFUL (total time: 21 seconds)你怎么看待这个问题的想法?

+0

什么问题? – Alex

回答

1

单引号将解决您的问题...

state.executeUpdate("INSERT INTO deneme (name) VALUES ('" + name + "')"); 

通过使用PreparedStament你不需要用单引号和双引号组合一塌糊涂。

请注意,为什么需要try语句是为了报告异常,因为访问数据库时很多事情可能会出错,并报告异常消息,这将帮助您找到问题。

此外,在尝试连接之前检查JDBC驱动程序是否存在始终有用。插入另一个语句,如下所示:

try { 
     Class.forName("com.mysql.jdbc.Driver"); 
    } catch (ClassNotFoundException e) { 
     String msg = "The com.mysql.jdbc.Driver is missing\n" 
       + "install and rerun the application"; 
     JOptionPane.showMessageDialog(this, msg, this.getTitle(), JOptionPane.ERROR_MESSAGE); 
     System.exit(1); 
    } 
+0

那太愚蠢了:) – Yusuf

1

我假设问题是,端口80保留给网络(HTTP)服务器,而不是MySQL。 MySQL的默认端口是3306。

+0

我已经尝试过,但仍然没有插入mysql .. – Yusuf

+0

尝试添加在catch块“e.printStackTrace()”,所以你会看到你正在得到哪个异常。 – meilechh

+0

输出:http://ideone.com/vkdCPp – Yusuf