您的位置:首页 > 编程语言 > C语言/C++

C++及Java连接MySQL方法

2012-12-05 19:35 288 查看
Java连接MySQL

1.下载一个connector的jar包,例如 mysql-connector-java-5.1.7-bin.jar;

2.工程-》属性-》库中:添加外部jar,选择下载的connector的jar包即可;

3.简要连接程序参考:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.List;

import com.mysql.jdbc.PreparedStatement;

public class DataBase {

private static String dbUrl = "jdbc:mysql://localhost:3306/news";

private static String user = "root";

private static String password = "xx";

private static Connection conn = null;

private static PreparedStatement prest = null;

public DataBase(){}

public DataBase(String db,String user,String passwd)

{

this.dbUrl = "jdbc:mysql://localhost:3306/"+db;

this.user = user;

this.password = passwd;

}

public static void insertNews(News news, String table){

conn = null;

try{

Class.forName("com.mysql.jdbc.Driver");

java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());

conn = DriverManager.getConnection(dbUrl,user,password);

prest = null;

String sqll = "insert into "+table+"(id,title,content,ntype,site,url,pubtime,source,author,cgroup)"+"values(?,?,?,?,?,?,?,?,?,?)";

prest = (PreparedStatement)conn.prepareStatement(sqll);

prest.setInt(1, news.id);

prest.setString(2, news.title);

prest.setString(3, news.content);

prest.setString(4, news.ntype);

prest.setString(5, news.site);

prest.setString(6, news.url);

prest.setTimestamp(7, news.pubtime);

prest.setString(8, news.source);

prest.setString(9, news.author);

prest.setString(10, news.cgroup);

prest.executeUpdate();

prest.close();

}

catch (ClassNotFoundException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

}

}

C++连接MySQL

网络上的很多介绍都有问题,这里主要参考 http://www.cnblogs.com/lovebread/archive/2009/11/24/1609936.html
1. 下载C的connector,主要是include和lib文件夹(MySQL connector for C)

2. include目录下的libmysql.lib文件拷到VS2008安装目录中的VC\lib\下,然后在 项目-选项-c/c++-常规 中的附加包含目录以及 链接器-常规 中的附加库目录中加入“……\MySQL\include\”(connector的路径),并且在 链接器-输入 中的附加依赖项内添加“libmysql.lib”,这样即可使编译器找到mysql.h头文件,并可在程序中使用c语言的mysql API来操作数据库。另外还需要在project目录下拷贝上libmysql.dll。

3. 代码

#include<winsock2.h>

#include<iostream>

#include"mysql.h"

using namespace std;

int main(char **args)

{

const char user[] = "root"; //username

const char pswd[] = "****"; //password

const char host[] = "localhost"; //or"127.0.0.1"

const char dbname[] = "news"; //database

unsigned int port = 3306; //server port

MYSQL mysql;

MYSQL_RES *result = NULL;

MYSQL_ROW sql_row;

MYSQL_FIELD *fd;

char column[32][32];

int res;

mysql_init(&mysql);

if (mysql_real_connect(&mysql,host,user,pswd,dbname,port,0,0))

{

cout<<"ok"<<endl;

mysql_query(&mysql, "SET NAMES GBK");

res=mysql_query(&mysql,"select * from sy_163_news");

if(!res)

{

result = mysql_store_result(&mysql);

if(result)

{

int i,j;

cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;

for(i=0;fd=mysql_fetch_field(result);i++)//获取列名

{

strcpy(column[i],fd->name);

}

j=mysql_num_fields(result);

for(i=0;i<j;i++)

{

printf("%s\t",column[i]);

}

printf("\n");

while(sql_row=mysql_fetch_row(result))//获取具体的数据

{

for(i=0;i<j;i++)

{

printf("%s\n",sql_row[i]);

}

printf("\n");

}

}

}

return 0;

}

else

{

int i = mysql_errno(&mysql);

const char * s = mysql_error(&mysql);

cout << s<<endl;

}

}

关于用VS2008测试出现“MSVCRTD.lib(crtexew.obj) :errorLNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”的错误,参考 http://apps.hi.baidu.com/share/detail/18226584 解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: