JAVA连接mysql数据库,动态创建表以及动态插入数据

利用JDBC驱动链接MySQL数据其实很简单的,第一要下载一个名为 “mysql-connector-java-5.1.20-bin.jar” 驱动包。并解压到相应的目录!5.1.20是版 本号到目前为止这个是最新的版本!

第一、如果你是在命令行方式下开发,需要把mysql-connector-Java-5.1.2.0-bin.jar 添加到系统的CLASSPATH中。怎么加到CLASSPATH中我想不要讲了大家也应懂的吧。

第二、如果你是用Eclipse开发工具的话,还要配置一下 "Java Build Path"、具体的操作“点击Eclipse的Project->Properties->Java Build Path->Libraries” 现在在看以的窗口中点击右边的Add External JARs  然后选择mysql-connector-java-5.1.2.0-bin.jar驱动 点击打开就完成了配置。

下面就是Java利用JDBC连接Mysql数据的实例代码:

  • import java.sql.*;   
  •   
  •  public class ConnectMysql {   
  •     public static void main(String[] args) {   
  •         String driver = "com.mysql.jdbc.Driver";   
  •         String url = "jdbc:mysql://192.168.1.112:3306/linksystem";   
  •         String user = "root";   
  •         String password = "blog.micxp.com";   
  •         try {   
  •             Class.forName(driver);   
  •             Connection conn = DriverManager.getConnection(url, user, password);   
  •             if (!conn.isClosed()) {   
  •                 System.out.println("Succeeded connecting to the Database!");   
  •                 Statement statement = conn.createStatement();   
  •                 String sql = "select * from flink_list";   
  •                 ResultSet rs = statement.executeQuery(sql);   
  •                 String name;   
  •                 while (rs.next()) {   
  •   
  •                     name = rs.getString("link_name");   
  •                     System.out.println(name);   
  •                 }   
  •   
  •             }   
  •         } catch (Exception e) {   
  •             e.printStackTrace();   
  •   
  •         }    
  •     }   
  • } 

     

    -----------------------------引述完毕---------------------------

    上述实例包含在完整的结构中,如果只是作为项目程序的一部分,也可以将其写为一个类,在主程序中new对象即可,不再赘述。连接时有时会抛出异常,在一般情况下,密码错误是主要原因,通过mysql工具直接修改即可,另外自己的url也容易出错,上述例中使 url="jdbc:mysql://192.168.1.112:3306/linksystem"  时,就抛出异常。改正方法:

    <1>把192.168.1.112直接改为localhost。

    <2>linksystem是你建表的数据库名称,要换成你自己的。

          一切就绪后,开始动态建表,建表代码如下: 

    [java]  view plain copy
    1. sqlstr = "create table random_data(";    
    2. sqlstr+= " id int(32),";     
    3. for(i=0;i<nodenum-1;i++) sqlstr+="ND"+i+" int(32),";     
    4. sqlstr+= "ND"+(nodenum-1)+" int(32)";  
    5. sqlstr+= " );";    

    上述代码可输出如下形式字符串:

    [sql]  view plain copy
    1. create table random_data( id int(32),ND0 int(32),ND1 int(32),ND2 int(32),ND3 int(32),ND4 int(32),ND5 int(32),ND6 int(32) );  

          即生成一个列名为id,ND0,ND1......的表格,列名显然是动态生成的。生成表格之后要插入数据,现有一ArrayLst存放着全部的数据,要做的就是逐个放入空表中,显然要用到insert语句

    首先我们可以写出如下代码:

    [java]  view plain copy
    1.    for(i=0;i<nodenum-1;i++){  
    2.       for(j=0;j<nolist.get(i).get_feature_count();j++){  
    3.           sqlin = "insert into random_data( id,";  
    4.           for(i=0;i<nodenum-1;i++)sqlin+="ND"+i+",";  
    5.           sqlin+= "ND"+(nodenum-1);  
    6.           sqlin+=") values(";    
    7.        }  
    8.    }   

    可以得到 “ insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values( ”的字符串 ,之后的部分必须动态的重构出来,才能拼接完整,令over也是ArrayList类型,是原数据集ArrayList中数据每隔列数个就存入一次得到的,其输出已经形如:
    [java]  view plain copy
    1.       '2','3','1','0','2','1','4',  
    2.       '4','2','5','6','2','1','2',  
    3.       '3','2','4','0','2','2','0',  

    再用 T = T .substring(0,T.length()-1) 这个方法去掉最后重复的逗号,现在,完整的insert语句中values括号内的字符串已经得到,最后过程,有如下代码:

    [java]  view plain copy
    1. for(i=0;i<over.size();i++){  
    2.    String sqldo = sqlin +"'"+(i+1)+"',"+ over.get(i) + ");";  
    3.    //System.out.println(sqldo);   
    4.    statement.executeUpdate(sqldo);             
    5. }  

    输出拼接完成的字符串,可得到若干字符串形如:       

    [sql]  view plain copy
    1. insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values('3','2','4','0','2','2','0');  

    至此,由以上种种操作,已经得到了以下字符串,显然它们就是是我们想要的sql执行语句:

    [sql]  view plain copy
    1. create table random_data( id int(32),ND0 int(32),ND1 int(32),ND2 int(32),ND3 int(32),ND4 int(32),ND5 int(32),ND6 int(32) );
    2. insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values('3','2','4','1','0','3','2');  
    3. select * from random_data where id = "16760"; //具体查询不做详述  

    由于在for循环中进行,每次拼接完成后随即执行,完成循环的同时也完成了对数据库中数据的插入操作,所以动态建立的表格中便动态插入了数据

    以上所有内容的关键,就是字符串的拼接,以及所遵循的sql语句的书写格式,在实际调试程序时,最好的方法是在mysql-front中的命令调试器(或命令行)中调试输出的字符串,这个过程应该是个考验细心和耐心的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值