码迷,mamicode.com
首页 > 编程语言 > 详细

C、C++、python、Java、php、C#六种流行语言大PK

时间:2014-11-21 12:20:01      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   os   使用   sp   java   for   数据   

本文是C、C++、python、Java、php、C#六种语言连接mysql数据库的代码展示,在LZ尝试的过程中,无论是语言环境搭建、mysql依赖库的导入还是代码的风格,各种语言都各有千秋。接下来,我们就让这些语言一一登场吧。

Java(最具噱头的语言)

Java给新人的印象应该是入门简单、代码优雅、活跃度高、跨平台、开源大家庭等等,实在是当之无愧的明星语言,而且是偶像派的。不过可惜的是, 偶像派明星很容易被干掉。Java语言是LZ赖以生存的语言,因此LZ不希望做个偶像派,只能奋起直追,争取做实力派的Javaer。

说起这次Java连接mysql的编写,实在没什么好说的,毕竟本身就是做这个的,所以这一路非常顺利,算是最无感的一个。下面是LZ写的代码。

Java代码
  1. package  cn.zxl.jmysql;  
  2.   
  3. import  java.sql.Connection;  
  4. import  java.sql.DriverManager;  
  5. import  java.sql.ResultSet;  
  6. import  java.sql.Statement;  
  7.   
  8. public   class  JMysql {  
  9.       
  10.      private   static   final  String DRIVER =  "com.mysql.jdbc.Driver" ;  
  11.      private   static   final  String URL =  "jdbc:mysql://localhost/test" ;  
  12.      private   static   final  String USERNAME =  "root" ;  
  13.      private   static   final  String PASSWORD =  "123456" ;  
  14.      private   static   final  String SQL =  "select * from test" ;  
  15.       
  16.      public   static   void  main( String[] args ) {  
  17.         Connection connection =  null ;  
  18.         Statement statement =  null ;  
  19.         ResultSet resultSet =  null ;  
  20.          try  {  
  21.             Class.forName(DRIVER);  
  22.             connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);  
  23.             statement = connection.createStatement();  
  24.             resultSet = statement.executeQuery(SQL);  
  25.              while  (resultSet.next()) {  
  26.                 System.out.println( "|"  + resultSet.getString( "id" ) +  "|"  + resultSet.getString( "name" ) +  "|" );  
  27.             }  
  28.         }  catch  (Exception e) {  
  29.             System.out.println( "query failed!" );  
  30.         }  finally  {  
  31.              try  {  
  32.                 resultSet.close();  
  33.                 statement.close();  
  34.                 connection.close();  
  35.             }  catch  (Exception e) {  
  36.                  throw   new  RuntimeException(e);  
  37.             }  
  38.         }  
  39.     }  
  40.       
  41. }  

以下是输出结果,表示程序是正确的。

bubuko.com,布布扣

总的来说,Java的mysql连接编写是最无感的一个,因为这是LZ比较熟悉的。就Java本身而言,LZ对它的打分如下。这里要特别说明的是,由于其它几种语言LZ都只是略知皮毛,因此本次只从最直观的两个感受去评分。

入门难度:★★★

代码优雅度:★★★★

C(最令人崇拜的语言)

这个语言在大学里LZ就学过一点皮毛,不过当时很厌烦这个无用的家伙,LZ想要写的是大型网游,而不是输出一个矩阵,或者打印个“心形”去泡妞。 不过说来也怪,到得现在,LZ已经做了两年的程序猿,近半年的PM,却忽然之间对C这个老家伙情有独钟,敬意油然而生,实在是怪哉怪哉。

废话不多说,下面是LZ写的代码。

C++代码
  1. 《c_mysql.h》  
  2. #ifndef C_MYSQL_H_   
  3. #define C_MYSQL_H_   
  4.   
  5. #include <stdio.h>   
  6. #include <stdlib.h>   
  7. #include <winsock2.h>   
  8. #include <windows.h>   
  9. #include <mysql.h>   
  10.   
  11. void  execute_sql( char * sql);  
  12.   
  13. #endif   
C++代码
  1. 《c_mysql.c》  
  2. #include "c_mysql.h"   
  3.   
  4. #define HOST "localhost"   
  5. #define USERNAME "root"   
  6. #define PASSWORD "123456"   
  7. #define DATABASE "test"   
  8.   
  9. int  main()  
  10. {  
  11.      char  *sql =  "select * from test" ;  
  12.     execute_sql(sql);  
  13.      return  0;  
  14. }  
  15.   
  16. void  execute_sql( char * sql)  
  17. {  
  18.     MYSQL connection;  
  19.     MYSQL_RES *result_pointer;  
  20.     MYSQL_ROW result_row;  
  21.      int  result, row, column, i, j;  
  22.     mysql_init(&connection);  
  23.      if  (NULL == mysql_real_connect(&connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS))  
  24.     {  
  25.         printf( "Error:connection failed!\n" );  
  26.          return ;  
  27.     }  
  28.     mysql_query(&connection,  "set names gbk" );  
  29.     result = mysql_query(&connection, sql);  
  30.      if  (result)  
  31.     {  
  32.         printf( "Error:query failed!\n" );  
  33.         mysql_close(&connection);  
  34.          return ;  
  35.     }  
  36.     result_pointer = mysql_store_result(&connection);  
  37.      if  (result_pointer)  
  38.     {  
  39.         row = mysql_num_rows(result_pointer);  
  40.          for  (i = 1; i < row + 1; i++)  
  41.         {  
  42.             result_row = mysql_fetch_row(result_pointer);  
  43.             printf( "|%s|%s|\n" , result_row[0] ,result_row[1]);  
  44.         }  
  45.     }  
  46.     mysql_close(&connection);  
  47.     system( "pause" );  
  48. }  

以下是程序的输出,代表代码是可正确运行的。

bubuko.com,布布扣

或许是因为Java无法操纵指针,所以在写C语言的时候,使用&、*、->这些符号感觉特别爽,不知道真正的Cer是否有这样的感觉呢。下面是LZ对C语言的打分。

入门难度:★★

代码优雅度:★★★

C++(最神秘莫测的语言)

C++作为难度最高的语言,称之为神秘莫测一点都不过分,能游刃有余使用C++的,实在是少之又少。对C++有此印象,主要是因为当时LZ看Java虚拟机源码的悲惨经历,那满屏幕的宏定义,实在令LZ为自己的智商捉急,同时也被编写Java虚拟机的大神们深深折服。

以下是最高深的语言连接mysql的代码,请过目。

C++代码
  1. 《c++_mysql.h》  
  2. #ifndef C___MYSQL_H_   
  3. #define C___MYSQL_H_   
  4.   
  5. #include <iostream>   
  6. #include <mysql_connection.h>      
  7. #include <mysql_driver.h>      
  8. #include <statement.h>   
  9. using   namespace  sql;     
  10. using   namespace  std;  
  11.   
  12. void  execute_sql( const  SQLString sql);  
  13.   
  14. #endif   
C++代码
  1. 《c++_mysql.cpp》  
  2. #include "c++_mysql.h"   
  3.   
  4. #define HOST "localhost"   
  5. #define USERNAME "root"   
  6. #define PASSWORD "123456"   
  7. #define DATABASE "test"   
  8.   
  9. int  main()  
  10. {  
  11.      const  SQLString sql =  "select * from test" ;  
  12.     execute_sql(sql);  
  13.      return  0;  
  14. }  
  15.   
  16. void  execute_sql( const  SQLString sql)  
  17. {  
  18.     mysql::MySQL_Driver *driver;     
  19.     Connection *connection;     
  20.     Statement *statement;     
  21.     ResultSet *result_set;     
  22.     driver = mysql::get_mysql_driver_instance();     
  23.     connection = driver->connect( "tcp://localhost:3306" ,  "root" ,  "123456" );     
  24.     statement = connection->createStatement();     
  25.     statement->execute( "use test" );    
  26.     statement->execute( "set names gbk" );  
  27.     result_set = statement->executeQuery(sql);     
  28.      while (result_set->next())     
  29.     {     
  30.         cout <<  "|"  << result_set->getInt( "id" ) <<  "|"  << result_set->getString( "name" ) <<  "|"  << endl;     
  31.     }     
  32.      delete  statement;     
  33.      delete  connection;    
  34.     system( "pause" );  
  35. }  

以下是输出结果,代表程序可以正确运行。

bubuko.com,布布扣

C++这个mysql连接的方式,其API与Java的相似度极高,粗略估计大约有90%左右。因此C++的程序除了异常捕捉和内存清理与Java有些区别之外,其它的代码非常相似,但LZ始终觉得使用“.”没有使用“->”显得高端,0.0。以下是LZ的评分。

入门难度:★★★★

代码优雅度:★★★

php(最低调奢华的语言)

PHP虽然近期也很火,但是总觉得它有点低调,但又不失内涵。作为网站制作最适合的语言之一,它总是默默的在发挥自己的力量。

以下是PHP连接mysql低调的代码。

PHP代码
  1. <?php  
  2.      $mysql_server_name = "localhost" ;  
  3.      $mysql_username = "root" ;  
  4.      $mysql_password = "123456" ;  
  5.      $mysql_database = "test" ;  
  6.       
  7.      $connection  = mysql_connect( $mysql_server_name ,  $mysql_username , $mysql_password );  
  8.      if (! $connection ) {  
  9.          echo   "connection failed!" ;  
  10.          return ;  
  11.     }  
  12.     mysql_set_charset( "gbk" , $connection );  
  13.     mysql_select_db( $mysql_database ,  $connection );  
  14.      $sql = "select * from test" ;  
  15.      $result =mysql_query( $sql ,  $connection );  
  16.      while ( $row  = mysql_fetch_array( $result )) {  
  17.          echo   "|" . $row [ "id" ]. "|" . $row [ "name" ]. "|\n" ;  
  18.     }  
  19.     mysql_close( $connection );  
  20. ?>  

以下是程序运行结果,代表程序是正确的。

bubuko.com,布布扣

如果仔细观察会发现,PHP的API与C语言非常相似,这是因为PHP是使用DLL来扩展的mysql操作导致的。此外,PHP与前面三个不同的是,它不是编译型语言,是一种服务端的脚本语言,因此LZ选择使用命令来执行它。以下是LZ对它的评分。

入门难度:★★★

代码优雅度:★★★★

C#(最具潜力的语言)

C#最近虽然也算火爆,但却似乎一直有些力不从心的感觉,尽管LZ非C#成员,但也认识不少C#程序猿。不过LZ个人觉得,高级形态是语言的趋 势,因此像C#、Java、Object-c这种被高度封装的语言总会发光发热,毕竟再退回几十年前去,使用汇编甚至二进制去写代码的日子肯定是不会再到 来了。

以下是C#连接mysql数据库的代码。

C#代码
  1. using  System;  
  2. using  System.Collections.Generic;  
  3. using  System.Linq;  
  4. using  System.Text;  
  5. using  MySql.Data.MySqlClient;  
  6.   
  7. namespace  CSMysql  
  8. {  
  9.      class  Program  
  10.     {  
  11.          static   void  Main( string [] args)  
  12.         {  
  13.             MySqlConnection connection =  new  MySqlConnection("Database=‘test‘;Data Source=‘localhost‘;User Id=‘root‘;Password=‘123456‘;charset=‘utf8‘;pooling=true" );  
  14.             MySqlCommand command =  new  MySqlCommand();  
  15.             command.Connection = connection;  
  16.             command.CommandText =  "select * from test" ;  
  17.              try   
  18.             {  
  19.                 command.Connection.Open();  
  20.                 MySqlDataReader reader = command.ExecuteReader();  
  21.                  while  (reader.Read())  
  22.                 {  
  23.                     Console.WriteLine( "|"  + reader.GetInt32( "id" ) +  "|"  + reader.GetString( "name" ) +  "|" );  
  24.                 }  
  25.                 Console.ReadLine();  
  26.             }  
  27.              catch  (Exception)  
  28.             {  
  29.                 Console.WriteLine( "query failed!" );  
  30.             }  
  31.              finally   
  32.             {  
  33.                 command.Connection.Close();  
  34.             }  
  35.         }  
  36.     }  
  37. }  

以下是程序运行结果,代表着程序是可以正确运行的。

bubuko.com,布布扣

C#的API有些特别,而且看到有command就难免让人联想到command模式,不知这API里面的实现是否是command设计模式。总的来说,C#和Java的mysql操作API还是差别比较大的,这让LZ有点出乎意料。以下是LZ对它的评分。

入门难度:★★★

代码优雅度:★★★★

python(最高端大气上档次的语言)

对于python来说,LZ之前就已经写过一篇小博文,无论从哪个角度来讲,这个语言都给LZ一种高大上的感觉。无论是它霸气的脚本语言特有的语法,还是特别的编码格式要求,都让LZ心生向往。

以下是python高端大气上档次的代码。

Python代码
  1. # coding=utf-8   
  2. import  MySQLdb  
  3. import  sys  
  4.    
  5. host =  ‘localhost‘   
  6. user =  ‘root‘   
  7. password  =  ‘123456‘      
  8. db   =  ‘test‘   
  9.    
  10.    
  11. if  __name__ ==  ‘__main__‘ :  
  12.     connection = MySQLdb.connect(host,user,password,db);  
  13.      try :  
  14.         connection.ping()  
  15.      except :  
  16.          print  ( ‘failed to connect MySQL.‘ )  
  17.     sql =  ‘select * from test‘   
  18.     cursor = connection.cursor()  
  19.     cursor.execute(sql)  
  20.      for  row  in  cursor:  
  21.          print  ( "|"  + str(row[ 0 ]) +  "|"  + row[ 1 ] +  "|" )  
  22.     cursor.close()  
  23.     connection.close()  
  24.     sys.exit()  

以下是程序输出结果,代表程序的正确性。

bubuko.com,布布扣

尽管python在安装mysql库的时候曾一度让LZ一筹莫展,但这依然无法阻止LZ对python的追逐之心。见到python的API可以说让LZ惊了个呆,实在是简洁至极,别具匠心。好了,多的就不说了,分数代表LZ的心。

入门难度:★★★

代码优雅度:★★★★★

C、C++、python、Java、php、C#六种流行语言大PK

标签:http   io   ar   os   使用   sp   java   for   数据   

原文地址:http://www.cnblogs.com/dxm2025/p/4112286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!