以连接mysql为例:六种流⾏的语⾔⽐较——C、C++、python、Java、php、
C#
本⽂是六种语⾔连接mysql数据库的代码展⽰,在LZ尝试的过程中,⽆论是语⾔环境搭建、mysql依赖库的导⼊还是代码的风格,各种语⾔都各有千秋。接下来,我们就让这些语⾔⼀⼀登场吧。
Java(最具噱头的语⾔)
Java给新⼈的印象应该是⼊门简单、代码优雅、活跃度⾼、跨平台、开源⼤家庭等等,实在是当之⽆愧的明星语⾔,⽽且是偶像派的。不过可惜的是,偶像派明星很容易被⼲掉。Java语⾔是LZ赖以⽣存的语⾔,因此LZ不希望做个偶像派,只能奋起直追,争取做实⼒派的Javaer。
说起这次Java连接mysql的编写,实在没什么好说的,毕竟本⾝就是做这个的,所以这⼀路⾮常顺利,算是最⽆感的⼀个。下⾯是LZ写的代码。
l.jmysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JMysql {
private static final String DRIVER ="sql.jdbc.Driver";
private static final String URL ="jdbc:mysql://localhost/test";
private static final String USERNAME ="root";
private static final String PASSWORD ="123456";
private static final String SQL ="select * from test";
public static void main( String[] args ){
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try{
Class.forName(DRIVER);
connection = Connection(URL, USERNAME, PASSWORD);
statement = ateStatement();
resultSet = uteQuery(SQL);
()){
System.out.println("|"+ String("id")+"|"+ String("name")+"|");
}
}catch(Exception e){
System.out.println("query failed!");
}finally{
try{
resultSet.close();
statement.close();
connection.close();
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
}
输出结果如下:
总的来说,Java的mysql连接编写是最⽆感的⼀个,因为这是LZ⽐较熟悉的。就Java本⾝⽽⾔,LZ对
它的打分如下。这⾥要特别说明的是,由于其它⼏种语⾔LZ都只是略知⽪⽑,因此本次只从最直观的两个感受去评分。
⼊门难度:★★★
代码优雅度:★★★★
C(最令⼈崇拜的语⾔)
这个语⾔在⼤学⾥LZ就学过⼀点⽪⽑,不过当时很厌烦这个⽆⽤的家伙,LZ想要写的是⼤型⽹游,⽽不是输出⼀个矩阵,或者打印个“⼼形”去泡妞。不过说来也怪,到得现在,LZ已经做了两年的程序猿,近半年的PM,却忽然之间对C这个⽼家伙情有独钟,敬意油然⽽⽣,实在是怪哉怪哉。
废话不多说,下⾯是LZ写的代码。
《c_mysql.h》
#ifndef C_MYSQL_H_
#define C_MYSQL_H_
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <windows.h>
#include <mysql.h>
void execute_sql(char* sql);
#endif
《c_mysql.c》
#include "c_mysql.h"
#define HOST "localhost"
#define USERNAME "root"
#define PASSWORD "123456"
#define DATABASE "test"
int main()
{
char*sql ="select * from test";
execute_sql(sql);
return0;
}
void execute_sql(char* sql)
{
MYSQL connection;
MYSQL_RES *result_pointer;
MYSQL_ROW result_row;
int result, row, column, i, j;
mysql_init(&connection);
if(NULL==mysql_real_connect(&connection, HOST, USERNAME, PASSWORD, DATABASE,0,NULL, CLIENT_FOUND_ROWS)) {
printf("Error:connection failed!\n");
return;
}
mysql_query(&connection,"set names gbk");
result =mysql_query(&connection, sql);
if(result)
{
printf("Error:query failed!\n");
mysql_close(&connection);
return;
}
result_pointer =mysql_store_result(&connection);
if(result_pointer)
{
row =mysql_num_rows(result_pointer);
for(i =1; i < row +1; i++)
{
result_row =mysql_fetch_row(result_pointer);
printf("|%s|%s|\n", result_row[0],result_row[1]);php语言零基础入门
}
}
mysql_close(&connection);
system("pause");
}
或许是因为Java⽆法操纵指针,所以在写C语⾔的时候,使⽤&、*、->这些符号感觉特别爽,不知道真正的Cer是否有这样的感觉呢。下⾯是LZ对C语⾔的打分。
⼊门难度:★★
代码优雅度:★★★
C++(最神秘莫测的语⾔)
C++作为难度最⾼的语⾔,称之为神秘莫测⼀点都不过分,能游刃有余使⽤C++的,实在是少之⼜少。对C++有此印象,主要是因为当时LZ看Java虚拟机源码的悲惨经历,那满屏幕的宏定义,实在令LZ为⾃⼰的智商捉急,同时也被编写Java虚拟机的⼤神们深深折服。
以下是最⾼深的语⾔连接mysql的代码,请过⽬。
《c++_mysql.h》
#ifndef C___MYSQL_H_
#define C___MYSQL_H_
#include <iostream>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <statement.h>
using namespace sql;
using namespace std;
void execute_sql(const SQLString sql);
#endif
《c++_mysql.cpp》
#include "c++_mysql.h"
#define HOST "localhost"
#define USERNAME "root"
#define PASSWORD "123456"
#define DATABASE "test"
int main()
{
const SQLString sql ="select * from test";
execute_sql(sql);
return0;
}
void execute_sql(const SQLString sql)
{
mysql::MySQL_Driver *driver;
Connection *connection;
Statement *statement;
ResultSet *result_set;
driver = mysql::get_mysql_driver_instance();
connection = driver->connect("tcp://localhost:3306","root","123456");
statement = connection->createStatement();
statement->execute("use test");
statement->execute("set names gbk");
result_set = statement->executeQuery(sql);
while(result_set->next())
{
cout <<"|"<< result_set->getInt("id")<<"|"<< result_set->getString("name")<<"|"<< endl;
}
delete statement;
delete connection;
system("pause");
}
C++这个mysql连接的⽅式,其API与Java的相似度极⾼,粗略估计⼤约有90%左右。因此C++的程序除了异常捕捉和内存清理与Java有些区别之外,其它的代码⾮常相似,但LZ始终觉得使⽤“.”没有使⽤“->”显得⾼端,0.0。以下是LZ的评分。
⼊门难度:★★★★
代码优雅度:★★★