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 解决。
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 解决。
相关文章推荐
- c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法
- java连接mysql的几种方法
- SAE平台中使用java程序连接mysql方法
- Java连接mysql中遇到的一些问题及解决方法
- java连接mysql 乱码的问题的解决方法
- java中利用JDBC连接MySQL方法总结
- java连接mysql :No Suitable Driver Found For Jdbc 解决方法
- java 正确 连接 bae 3.0 MySQL 最简单有效的方法
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常
- Java连接MySQL方法
- mysql,sql的Java连接方法(简单应用)执行sql查询与预处理
- Java连接mysql乱码的解决方法
- Java连接mysql中遇到的一些问题及解决方法
- Linux下使用C++连接mysql的方法
- Java连接MySQL出现乱码解决方法
- java连接数据库的解决方法大全(mysql)
- Java连接mysql的方法
- C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法
- C++连接mysql的方法(直接调用C-API)
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决