本文是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. }  

  以下是輸出結果,表示程序是正確的。

C、C++、python、Java、php、C#六種流行語言大PK

  總的來說,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. }  

  以下是程序的輸出,代表代碼是可正確運行的。

C、C++、python、Java、php、C#六種流行語言大PK

  或許是因為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. }  

  以下是輸出結果,代表程序可以正確運行。

C、C++、python、Java、php、C#六種流行語言大PK

  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. ?>  

  以下是程序運行結果,代表程序是正確的。

C、C++、python、Java、php、C#六種流行語言大PK

  如果仔細觀察會發現,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. }  

  以下是程序運行結果,代表著程序是可以正確運行的。

C、C++、python、Java、php、C#六種流行語言大PK

  C#的API有些特別,而且看到有command就難免讓人聯想到command模式,不知這API里面的實現是否是command設計模式??偟膩碚f,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()  

  以下是程序輸出結果,代表程序的正確性。

C、C++、python、Java、php、C#六種流行語言大PK

  盡管python在安裝mysql庫的時候曾一度讓LZ一籌莫展,但這依然無法阻止LZ對python的追逐之心。見到python的API可以說讓LZ驚了個呆,實在是簡潔至極,別具匠心。好了,多的就不說了,分數代表LZ的心。

  入門難度:★★★

  代碼優雅度:★★★★★

除非特別注明,雞啄米文章均為原創
轉載請標明本文地址:http://www.9385095.live/software/376.html
2014年11月18日
作者:雞啄米 分類:軟件開發 瀏覽: 評論:9