C++的数组怎么配对Mysql的varchar? varchar转换成int类型
如何将数组插入数据库
不能直接存。重新以记录形式把数组数据组织进去。
C++怎么连接MySQL数据库?
首先你知道MFC程序的架构吗?如果你不知道的话,那和你说了怎么把MYSQL数据库的调用函数加到MFC中去你也看不懂啊。
用CONSOLE方式调用MYSQL和在MFC中调用MYSQL数据库没有本质的区别,都是通过API接口来调用,你只需要把MYSQL下面的头文件(MYSql的include目录下)拷贝到你的工程中,然后在你的工程中#include "mysql.h" 这个头文件就可以了。在你的代码中只需要在你需要的时候调用相关的API函数即可。
另外需要注意的是,你需要把libmysql.lib链接库链接到你的程序中,简单的说,在你的调用的地方(.cpp)文件的开头中加入如下语句:
#include "stdafx.h"
#include .....
#pragma comment(lib, "libmysql.lib") // 这样引入libmysql.dll
libmysql.lib和libmysql.dll都在mysql的安装目录下。
如何将CSV数据导入MySQL
导入操作
存在特殊字符情况的处理
Book1.csv
编号,名称,说明
1,测试数据1,"测试CSV文件中,有逗号"
2,测试数据2,"测试CSV文件中有""双引号"""
3,测试数据3,"测试CSV文件中,有逗号和""双引号"""
4,测试数据4,普通数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mysql> CREATE TABLE Test_Book1 (
-> id int,
-> name VARCHAR(10),
-> data VARCHAR(100)
-> );
Query OK, 0 rows affected (0.05 sec)
下面的 lines terminated by '\r\n' 是 要求换行符号,为 windows的换行
下面的 ignore 1 lines是 忽略第一行的标题行。
mysql> LOAD DATA INFILE 'f:/Book1.csv'
-> INTO TABLE Test_Book1
-> FIELDS TERMINATED BY ','
-> OPTIONALLY ENCLOSED BY '"'
-> lines terminated by '\r\n'
-> ignore 1 lines
-> (id, name, data);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from test_book1;
+------+-----------+--------------------------------+
| id | name | data |
+------+-----------+--------------------------------+
| 1 | 测试数据1 | 测试CSV文件中,有逗号 |
| 2 | 测试数据2 | 测试CSV文件中有"双引号" |
| 3 | 测试数据3 | 测试CSV文件中,有逗号和"双引号" |
| 4 | 测试数据4 | 普通数据 |
+------+-----------+--------------------------------+
4 rows in set (0.00 sec)
数据库类型转换 varchar int
你的思路是对的,必须保证字段里全部是数字才可以修改
例:表table2中的列id为int型,现改为varchar 型
alter table table2 alter column id varchar
如果要修改整个数据库的类型,可以用下面的语句
例子:把整个数据库的varchar 类型转换为nvarchar(放在查询分析器里执行)
declare @sql nvarchar(4000)
set @sql=''
select @sql=@sql+'alter table '+a.name+' alter column '+b.name +' nvarchar('+left(b.length,99)+')'+char(13)
from
sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on b.xusertype=c.xusertype
where a.xtype='U' and c.name='varchar' --and name >= '?'
order by b.name
print @sql
declare @sql varchar(8000)
select @sql = ''
select @sql = @sql + ' alter table [' + object_name(id) +'] alter column ['+name+'] nvarchar('+convert(varchar(4),length)+') '+char(13) from syscolumns
where objectproperty(id,'IsUserTable')=1 and xusertype=167
print @sql
alter table Table1 alter column a nvarchar(50)
alter table sipfriends alter column accountcode nvarchar(20)