java jdbc批量插入数据 MySQL取出double数据如何传给c ?

[更新]
·
·
分类:互联网
4928 阅读

MySQL取出double数据如何传给c

MySQL取出double数据如何传给c ?

C 通过mysql的c api和通过mysql的Connector C 1.1.3操作mysql的两种方式
使用vs2013和64位的msql 5.6.16进行操作
项目中使用的数据库名为booktik
表为book
……….
(共有30条记录,只列出了部分记录,14-30未列出)
一、通过mysql的C api进行操作
1、新建一个空项目
2、将D:Program FilesMySQLMySQL Server 5.6include添加到项目的包含目录中(根据具体路径而定)
3、将D:Program FilesMySQLMySQL Server 5.6lib添加到项目的库目录中(根据具体路径而定)
4、添加至附加依赖项中
(*3.4步也可以在程序代码的开始处加上#pragma comment(lib,D:Program FilesMySQLMySQL Server ) 来导入)
5、如果使用的mysql是64位的,还需要将项目的解决方案平台由win32改成x64
6、将D:Program FilesMySQLMySQL Server 5.6lib(根据具体路径而定)下的libmysql.dll复制到项目中去,和.cpp,.h文件位于同一路径下
至此,相关配置全部完成
程序代码
main.cpp
#include ltWindows.hgt
#include ltmysql.hgt
#include ltstringgt
#include ltiostreamgt
using namespace std
#pragma comment(lib,D:Program FilesMySQLMySQL Server )
int main()
{
const char user[] root
const char pswd[] 123456
const char host[] localhost
const char table[] booktik
unsigned int port 3306
MYSQL myCont
MYSQL_RES *result
MYSQL_ROW sql_row
int res
mysql_init(ampmyCont)
if (mysql_real_connect(ampmyCont, host, user, pswd, table, port, NULL, 0))
{
mysql_query(ampmyCont, SET NAMES GBK) //设置编码格式
res mysql_query(ampmyCont, select * from book)//查询
if (!res)
{
result mysql_store_result(ampmyCont)
if (result)
{
while (sql_row mysql_fetch_row(result))//获取具体的数据
{
coutltltBOOKNAME: ltlt sql_row[1] ltlt endl
coutltlt SIZE: ltlt sql_row[2] ltlt endl
}
}
}
else
{
cout ltlt query sql failed! ltlt endl
}
}
else
{
cout ltlt connect failed! ltlt endl
}
if (result ! NULL)
mysql_free_result(result)
mysql_close(ampmyCont)
system(pause)
return 0
}
运行结果如下:
二、通过mysql的Connector C 1.1.3进行操作
MySQL C Driver的实现基于JDBC规范MySQL Connector/C 是由Sun Microsystems开发的MySQL连接器。它提供了基于OO的编程接口与数据库驱动来操作MySQL服务器。与许多其他现存的C 接口实现不同,Connector/C 遵循了JDBC规范。也就是说,Connector/C Driver的API主要是基于Java语言的JDBC接口。JDBC是java语言与各种数据库连接的标准工业接口。Connector/C 实现了大部分JDBC规范。如果C 程序的开发者很熟悉JDBC编程,将很快的入门。
MySQL Connector/C 需要安装配置boost库,boost库安装编译在这里不进行阐述
1、新建一个空项目
2、将D:Program FilesMySQLConnector C 1.1.3include添加到项目的包含目录中(根据具体路径而定)
3、将D:oostoost_1_55_0添加到项目的包含目录中(根据具体路径而定)
4、将D:Program FilesMySQLConnector C 1.1.3libopt添加到项目的库目录中(根据具体路径而定)
5、添加至附加依赖项中
6、如果使用的mysql是64位的,还需要将项目的解决方案平台由win32改成x64
7、将D:Program FilesMySQLConnector C 1.1.3libopt(根据具体路径而定)下的mysqlcppconn.dll复制到项目中去,和.cpp,.h文件位于同一路径下
将D:Program FilesMySQLMySQL Server 5.6lib(根据具体路径而定)下的libmysql.dll复制到项目中去,和.cpp,.h文件位于同一路径下
至此,相关配置全部完成
程序代码
main.cpp
#include ltiostreamgt
#include ltmapgt
#include ltstringgt
#include ltmemorygt
#include mysql_driver.h
#include mysql_connection.h
#include cppconn/driver.h
#include cppconn/statement.h
#include cppconn/prepared_statement.h
#include cppconn/metadata.h
#include cppconn/exception.h
using namespace std
using namespace sql
int main()
{
sql::mysql::MySQL_Driver *driver 0
sql::Connection *conn 0
try
{
driver sql::mysql::get_mysql_driver_instance()
conn driver-gtconnect(tcp://localhost:3306/booktik

java如何防止sql注入?

java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构 ,大部分的SQL注入已经挡住了, 在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数
01 import
02 import
03 import
04 import
05 import
06 import
07 import
08 import
09 import
10 import
11 /**
12 * 通过Filter过滤器来防SQL注入攻击
13 *
14 */
15 public class SQLFilter implements Filter {
16 private String inj_str