我想在c++程序中获取是否安装了mysql,mysql本身提供了这样的api么?我自己查的时候没有发现这样的api,不知道有没有人有什么方法可以实现?

解决方案 »

  1.   

    Unix(Linux)还是windows下?
    API是没有的。
      

  2.   

    首先,在大部分环境下MYSQL并不需要安装,只需要复制一些文件到机器中就可以运行MYSQL了。所以自然也不可能有什么来判断MYSQL是否安装。你倒是可以通过连接MYSQL来试试MYSQL的服务有没有启动。你的具体需求是什么?
      

  3.   

    楼上说的确实是实际情况。
    有一种实际应用,是判断当前机器是否有正在运行的mysql进程。
      

  4.   


    1, 直接查看下系统进程啊,看有mysqld的服务在启动吗?
    2, 直接在命令行里面 sevice mysqld start, 运行下试试看,有反应了,就表名mysql 安装了。
    3, 至于mysql本身的api,不太明白你的意思!
      

  5.   

    我做的一个小软件使用的是mysql数据库,在安装过程中需要操作数据库然后在数据库中写些东西,所以我想在安装过程中检测数据库是否安装,因为我的环境是在win2003server中,用的数据库也都是安装版的,我想在我的C++程序中知道数据库是否安装,如果没有安装初始化流程就不再进行下去了。
      

  6.   

    我是想在程序过程中知道,
    例如 
    if(install mysql)
    {
       Initialize();
    }
    else
    {
      do nothing;
    }
    不知道我现在的表述是否清楚了些~~
      

  7.   


    我觉得你可以改下流程,只确定mysql是否安装,这儿比较困难,相反确定mysql服务是否存在,就比较容易了。
      

  8.   


    明白了他的意思了!1,在window系统下,只要检查注册表,就可以确定mysql是否安装了吧
    2,在linux系统下,检查mysql是否安装,就比较困难了,是否需要检索整个目录啊,或者系统参数表啊,看看里面有没有mysql的配置?
      

  9.   

    确定服务是否存在?能说说怎么个方法么?
    开始我想到的是去读注册表,windows提供了方法,但是不同版本的mysql在注册表中的目录的值是不一样的,所以想来这求教一下~~
      

  10.   

    这个方法我想到过,不过不确定是否可以,我看了注册表,以我的5.0版本为例
    注册表目录:
    mysql AB
    {
    mysql 5.0;
    }
    我只要确定这个目录存在就可以了么?
      

  11.   

    要看你的安装的定义是什么。 MYSQL本身可以直接绿色安装,这样不会有注册表项。
      

  12.   


    注册表的方法显然不靠谱,mysql可以不用安装直接使用的。
      

  13.   

    那你直接试着连一下MYSQL不就行了? 成功连接,则你可以接着操作。 连接不成功则可能是 根本没安装,也可能是安装了没启动, 还可能是启动了但不是绑定的3306端口,再可能还会是你没连接的权限。总之你可以直接用C的API mysql_real_connect(),然后根据返回码判定是否连接成功或者错误信息是什么。
      

  14.   

    哦,开始我只是想到了调用这个API的时候我不知道用户端数据库密码,没有想到即使密码错误,一旦用户端没有安装的话还是有不同的返回值的,非常感谢啊~~~马上动手,成功后结贴给分~~~