当前位置:编程学习 > JAVA >>

jdbc连接mysql中数据库名字的问题

我的mysql版本是5.2.34CE,就是有workbench的那个版本。

我首先
Creat New EER model
然后add schema  名字是mydb
然后add table -》add column 
也就是指建立了一张表,表里只有主键
Database->manage connections->new 新建连接名为test1
然后保存这个model 叫做mydb_test1

然后我用jdbc打开这个数据库,数据库的名字是啥呢?我试了test1(连接名),mydb(schema名),mydb_test1(mdb文件名)都不行:
以下代码可以编译通过,但是运行总是打印“连接数据库失败”然后是一堆exception

import java.io.*;
import java.sql.*;

public class DBCon
{

public static Connection getConn(){

 Connection con=null;
 try
 {
  Class.forName("com.mysql.jdbc.Driver");//加载并注册MySQL驱动,从导入的包中查询该名称并加载且注册到数据源中,Driver类是位于包com.mysql.jdbc中的一个编译好的类
  String user="root";
  String pwd="111";
  String URL="jdbc:mysql://localhost:3306/mydb_test1";//mysql数据库名
  con=DriverManager.getConnection(user,pwd,URL);
 }catch(Exception e){
  System.out.println("连接数据库失败");
  e.printStackTrace();
}//catch
 return con;  //该方法的返回类型为 Connection类
}//getMySQLCon
  public static void main(String[] args){
      Connection conn=DBCon.getConn();
      if(conn!=null){
       System.out.println("mysql 连接成功! connection="+conn.toString());
}//if
}//main
}//class
--------------------编程问答--------------------   con=DriverManager.getConnection(user,pwd,URL);
  con=DriverManager.getConnection(URL,user,pwd); --------------------编程问答-------------------- 最好在主函数中加入conn.close();这是个好习惯我认为 --------------------编程问答-------------------- 代码好像没有什么问题 楼主看看是不是没有加驱动包啊 --------------------编程问答-------------------- exception的内容是什么 --------------------编程问答-------------------- 貌似有点问题吧;
正确的语法是这样:
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password); --------------------编程问答-------------------- con=DriverManager.getConnection(user,pwd,URL);   写错了,先URL,再用户名,再密码 --------------------编程问答-------------------- 谢谢各位,首先.String URL="jdbc:mysql://localhost:3306/mydb_test1";//mysql数据库名
我想知道3306/后面的数据库名是哪一个? mysql的workbench里有一个new server instance会有一个名字,然后connection会有一个名字,新建EER model,存成mwb还有一个名字,到底用哪个名字才是3306/后应该加得名字?
我记得用access数据库要在数据源odbc里注册的,这里用jdbc来找mysql怎么就没注册呢?


1.con=DriverManager.getConnection(user,pwd,URL);   写错了,先URL,再用户名,再密码 
2.Class.forName("com.mysql.jdbc.Driver").newInstance();
以上两条都试过了,不行
3 回#3楼“代码好像没有什么问题 楼主看看是不是没有加驱动包啊”加驱动包不是Class.forName("com.mysql.jdbc.Driver").newInstance();这句话吗?还要import别的库吗?除了import java.sql.*;  ?
4.exception的内容
at java.net.URLClassLoader$1.run(unknow source)
at java.security.AccessController.doPrileleged<native method>
at java.net.URLCLASSLOADER.findClass<unknow source>
at java.lang.classloader.loadclass<unknow source>
at sun.misc.laucher$appclasloader.loadclass(unkown source)
at DBCon.getConn<DBCon.java:24>//也就是这一Class.forName("com.mysql.jdbc.Driver");
at 36  也就是这一句:Connection conn=DBCon.getConn();
--------------------编程问答--------------------  con=DriverManager.getConnection(user,pwd,URL);
这句话打反了吧。
应该是url,user,pwd吧 --------------------编程问答-------------------- 回复#8 程序里写的是先url,这个没问题的。 --------------------编程问答-------------------- 切一张exception的内容的图片上来,你的问题不充分 --------------------编程问答-------------------- 你好,首先3306/后应该加得名字你建数据库时的数据库名,就是你的表在哪个数据库就用那个名字;然后加驱动包不是Class.forName("com.mysql.jdbc.Driver")和import java.sql.*就可以了,你还要引进一个jar包,才行,肯定能运行!祝你成功,有问题联系我。 --------------------编程问答-------------------- #11, 请问引进哪个jar包?
你说的数据库名是mwb文件的名吗?也就是EER model的名字? --------------------编程问答-------------------- #10楼,您要的exception的图片如下
--------------------编程问答-------------------- 这个问题就是你没加jar包,jar包会加吧?右键项目,buildpath--->add External Archives 找到
mysql-connector-java-5.1.13-bin.jar添加上去 --------------------编程问答--------------------
引用 13 楼 sinapme 的回复:
#10楼,您要的exception的图片如下


mysql 驱动包自己加上去、

同#14描述、

楼主下次把异常信息尽量提供全面、 --------------------编程问答-------------------- 我没用eclipse,需要import mysql-connector-java-5.1.13-bin.jar吗? --------------------编程问答-------------------- 我用javac和tomcat两个工具而已 --------------------编程问答-------------------- #16 需要,如果你不是web应用,你就直接放到你的主工程目录下就可以了,如果是web,就放到lib下面。 
#12你创建的数据库名 --------------------编程问答-------------------- 我没用eclipse,我用的是cmd编译,用javac命令来编译。
所以我想知道在没有eclipse的环境下怎样解决这个问题?

classpath这个环境变量我已经设置过了。
import mysql-connector-java-5.1.13-bin.jar这句会导致编译错误
DBCon.java源代码如下:
import java.io.*;
import java.sql.*;
public class DBCon
{

public static Connection getConn(){

 Connection con=null;
 try
 {
  Class.forName("com.mysql.jdbc.Driver");
  String user="root";
  String pwd="111";
  String URL="jdbc:mysql://localhost:3306/mydb_test1";//mysql数据库名
  con=DriverManager.getConnection(URL,user,pwd);
 }catch(Exception e){
System.out.println("sunxd:authentition failure");
  e.printStackTrace();
}//catch
 return con;  //该方法的返回类型为 Connection类
}//getMySQLCon
  public static void main(String[] args){
      Connection conn=DBCon.getConn();
      if(conn!=null){
       System.out.println("mysql 连接成功! connection="+conn.toString());
}//if
}//main
}//class

cmd里执行如下操作
set CLASSPATH=C:\Program Files\Java\jdk1.7.0_05\lib\dt.jar;
set CLASSPATH=%classpath%;C:\Program Files\Java\jdk1.7.0_05\lib\mysqlCon.jar;
set CLASSPATH=%classpath%;C:\Program Files\Java\jdk1.7.0_05\lib\tools.jar;
set CLASSPATH=%classpath%;C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\*;
set CLASSPATH=%classpath%;C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\*.jar;

然后javac DBCon.JAVA
java DBCon.java

然后就出exception了 --------------------编程问答-------------------- 我在myeclipse里运行的结果是:mysql 连接成功! connection=com.mysql.jdbc.Connection@186768e

你可以把jar包放到你的主工程目录下试试;

import mysql-connector-java-5.1.13-bin.jar;这句就不需要了

首先恭喜你,代码没有错误哦 --------------------编程问答-------------------- --------------------编程问答-------------------- 我想知道我在楼上贴的那个图:最右边是server instance 
名字是mysqld@localhost
然后我打开这个instance,export一个叫做mydb的schema,那么这个shema就是数据库名了是吧?
把export保存在我的DBCon.java和DBCon.class的文件夹里了,叫mydb.sql
然后把jar包也放在这个文件夹里了,还是不行。

到底是肿么回事,崩溃了 --------------------编程问答-------------------- 注意URL,user,pwd的顺序。然后记得导入mysql的jar

con=DriverManager.getConnection(URL,user,pwd); 
--------------------编程问答-------------------- 在cmd里用java -cp.;import mysql-connector-java-5.1.13-bin.jar DBCon --------------------编程问答-------------------- 24#说的对,这样就行了,不过很奇怪,这是为什么呢?我在classpath里明明设好了这个jar,编译也没出错,运行怎么就错了呢? --------------------编程问答--------------------
引用 25 楼 sinapme 的回复:
24#说的对,这样就行了,不过很奇怪,这是为什么呢?我在classpath里明明设好了这个jar,编译也没出错,运行怎么就错了呢?


因为你的代码是这么写的,Class.forName("com.mysql.jdbc.Driver").newInstance();
这个意思是驱动jar包是运行时动态加载的,所以编译不会报错~
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,