引言

  鉴于五一期间超大的人流量,LZ思来想去,最终还是选择蜗居在自己的出租屋。无聊之际,当然不能忘了做点什么事情,于是LZ就研究了一下几种语言的皮毛,在这里献丑一翻,希望各位猿友莫要见笑。

  不过说来也巧,园子里前段时间刚好上演了一场语言大战,这让LZ的这篇博文一出生就可能卷入不必要的纷争。其实LZ早就想写这么一篇文章,只是语言的探究比较麻烦,因为每个语言往往最难搞的就是环境的搭建,而且非常浪费时间,因此LZ就挑了五一这个机会才开始着手进行。

  不管怎么说,LZ还是要澄清一下,本文只是LZ学习成果的展示,坚决不参加语言大战。如果猿友们非要问LZ对语言的看法,LZ就只能给你们讲一个LZ看过的玄幻小说了。

  这部小说里面讲述的是一个魔法师与武士的世界,每个人出生的时候,身体都会有“金木水火土雷风”这几种属性之一的特性,有些天纵奇才会有多种属性。大家都是从一层练到九层,十层则成神。在这个修炼体系当中,有一个特殊却又十分合乎情理的设定,就是在成神之前,大家都会从空气当中各自汲取相应的属性元素进行修炼,以期能领悟天道。不过在领悟天道成了神之后,成神之人的属性就会消失,甚至连武士与魔法师都再无任何区别。对于成神之人来说,他们操控的,只剩下那至高无上的神力而已。无属性,无职业。

  好了,故事就讲到这里吧,不知道猿友们看懂了吗?

语言大餐

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

Java(最具噱头的语言)

  

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

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

package cn.zxl.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 = "com.mysql.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 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
statement = connection.createStatement();
resultSet = statement.executeQuery(SQL);
while (resultSet.next()) {
System.out.println("|" + resultSet.getString("id") + "|" + resultSet.getString("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);
return ;
} 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, , 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 = ; i < row + ; i++)
{
result_row = mysql_fetch_row(result_pointer);
printf("|%s|%s|\n", result_row[] ,result_row[]);
}
}
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);
return ;
} 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", "");
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的评分。

  入门难度:★★★★

  代码优雅度:★★★

php(最低调奢华的语言)

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

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

<?php
$mysql_server_name="localhost";
$mysql_username="root";
$mysql_password="123456";
$mysql_database="test"; $connection = mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
if(!$connection) {
echo "connection failed!";
return;
}
mysql_set_charset("gbk",$connection);
mysql_select_db($mysql_database, $connection);
$sql="select * from test";
$result=mysql_query($sql, $connection);
while($row = mysql_fetch_array($result)) {
echo "|".$row["id"]."|".$row["name"]."|\n";
}
mysql_close($connection);
?>

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

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

  入门难度:★★★

  代码优雅度:★★★★

C#(最具潜力的语言)

  

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient; namespace CSMysql
{
class Program
{
static void Main(string[] args)
{
MySqlConnection connection = new MySqlConnection("Database='test';Data Source='localhost';User Id='root';Password='123456';charset='utf8';pooling=true");
MySqlCommand command = new MySqlCommand();
command.Connection = connection;
command.CommandText = "select * from test";
try
{
command.Connection.Open();
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("|" + reader.GetInt32("id") + "|" + reader.GetString("name") + "|");
}
Console.ReadLine();
}
catch (Exception)
{
Console.WriteLine("query failed!");
}
finally
{
command.Connection.Close();
}
}
}
}

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

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

  入门难度:★★★

  代码优雅度:★★★★

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

  

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

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

# coding=utf-8
import MySQLdb
import sys host = 'localhost'
user = 'root'
password = ''
db = 'test' if __name__ == '__main__':
connection = MySQLdb.connect(host,user,password,db);
try:
connection.ping()
except:
print ('failed to connect MySQL.')
sql = 'select * from test'
cursor = connection.cursor()
cursor.execute(sql)
for row in cursor:
print ("|" + str(row[0]) + "|" + row[1] + "|")
cursor.close()
connection.close()
sys.exit()

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

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

  入门难度:★★★

  代码优雅度:★★★★★

小结

  

  到此,六种语言的简单展示就结束了。就本次语言小旅游来说,LZ更喜欢python这块地,简洁的语法和API直接征服了LZ。不知道各位猿友有没有对哪个怦然心动呢?

/\/\\  /  \/

六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?的更多相关文章

  1. 六种流行的语言---C、C++、python、Java、php、C#比较[转]

    语言大餐 回归正题,本文是六种语言连接mysql数据库的代码展示,在LZ尝试的过程中,无论是语言环境搭建.mysql依赖库的导入还是代码的风格,各种语言都各有千秋.接下来,我们就让这些语言一一登场吧. ...

  2. Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目

    Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...

  3. C语言老司机学Python (五)

    今天看的是标准库概览. 操作系统接口: 用os模块实现. 针对文件和目录管理,还有个shutil模块可以用. 例句: import os os.getcwd() # 返回当前的工作目录 os.chdi ...

  4. 入门人工智能的首选语言为什么会是Python?

    为何人工智能(AI)首选Python?当你读完这篇文章就会明白了.为何人工智能(AI)首选Python?读完这篇文章你就知道了.我们看谷歌的TensorFlow基本上所有的代码都是C++和Python ...

  5. javascript——从「最被误解的语言」到「最流行的语言」

    JavaScript曾是"世界上最被误解的语言".由于它担负太多的特性.包含糟糕的交互和失败的设计,但随着Ajax的到来.JavaScript"从最受误解的编程语言演变为 ...

  6. Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  7. C语言中调用运行python程序

    C语言中调用运行python程序: Python代码如下: 创建test.py. #!/usr/bin/python3 #test.py import sys x = ]) print x*x 注意: ...

  8. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

  9. paip.判断字符是否中文与以及判读是否是汉字uapi python java php

    paip.判断字符是否中文与以及判读是否是汉字uapi python java php   ##判断中文的原理 注意: 中文与汉字CJKV 的区别..日本,韩国,新加坡,古越南等国家也用汉字,但不是中 ...

随机推荐

  1. .Net开发八年,坐标杭州,上个月换工作感觉现在.Net岗位很少,希望和同在杭州的同行们交流一下

    .Net开发八年,坐标杭州,中间做过2年Java, 目前新入职一家做防伪溯源的中型公司,200人左右, 之前在一家500人规模的软件公司工作过4年,后面2年工作过3家互联网创业公司, 上个月换工作感觉 ...

  2. 【原创】python __all__ 的用法

    1.  写自己的module或者package的时候需要控制向外暴露的名字, 这个很有用, 防止名字污染

  3. Java8系列之重新认识HashMap(转)

    原文出处: 前利 简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap.Hashtable.LinkedHashMap和Tree ...

  4. php四种基础排序算法的运行时间比较!

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

  5. TensorFlow函数(七)tf.argmax()

    tf.argmax(input, dimension, name=None) 参数: input:输入数据 dimension:按某维度查找. dimension=0:按列查找: dimension= ...

  6. 【node.js】GET/POST请求、Web 模块

    获取GET请求内容 node.js 中 url 模块中的 parse 函数提供了这个功能. var http = require('http'); var url = require('url'); ...

  7. python面试题库——1Python基础篇

    第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做 Python和Ja ...

  8. List集合和iterator并发异常处理

    一:List接口: 子类:ArrayList   LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...

  9. 关于html5 audio 标签在ios系统上不能正常自动播放的解决办法

    由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio, 因此我们通过一个用户交互事件来主动 play 一下 audio. ...

  10. Python 包、模块、函数、变量作用域

    Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量   Python是利用包和模块来组织一个项目的.   包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...