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
#include
#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<
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<
for(i=0;fd=mysql_fetch_field(result);i++)//获取列名
{
strcpy(column[i],fd->name);
}
j=mysql_num_fields(result);
for(i=0;i
{
printf("%s\t",column[i]);
}
printf("\n");
while(sql_row=mysql_fetch_row(result))//获取具体的数据
{
for(i=0;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<
}
}
关于用VS2008测试出现“MSVCRTD.lib(crtexew.obj) :errorLNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用”的错误,参考 http://apps.hi.baidu.com/share/detail/18226584 解决。