mysql print 字符串_MYSQL连接字符串参数说明

被迫转到MySQL数据库,发现读取数据库时,tinyint类型的值都被转化为boolean了,这样大于1的值都丢失,变成true了。查阅资料MySQL中无Boolean类型,都是存储为tinyint了,这也无妨,但是读回时不应该都变成boolean啊。网络检索没有解决方案,准备向官方报告bug,细想官方不应该有这样低级错误,先下载Connector/NET源码研究一下,发现其中有TreatTinyAsBoolean这个属性,检索百度无结果,google有几条英文的,看来大家都没有注意到这点,或者说很少用.Net玩 MySQL的。

还有一个困扰的问题在于c#与mysql配合使用的mysql-connector-net 版本问题,

在找对版本之后照着c#链接sqlserver的链接文件抄了一份又遇到了新问题

foreach (DbParameter p incommandParameters)

{if (p != null)

{//检查未分配值的输出参数,将其分配以DBNull.Value.

if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) &&(p.Value== null))

{

p.Value=DBNull.Value;

}try{

command.Parameters.Add(p);

}catch(Exception)

{//do something

}

}

}

就是这个处理mysqlparameter的这段函数,要么运行时报@id找不到或者已存在,要么parameter[]加不进去参数报已重复

无奈用了上面捕捉异常

还有一个问题用了链接字符串解决的 AllowUserVariables 从某个外文论坛找到的参数顺便记录一下确实解决了我的问题

错误大致为:.SerializeParameter(MySqlParameterCollection parameters

MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollection

parameters, MySqlPacket packet, String parmName, Int32 parameterIndex)

at MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql,

MySqlParameterCollection parameters,MySqlPacket packet)

下面献上MySql参数解析:

例子:server=localhost;port=3308;database=update;uid=yyy;password=111111;Charset=utf8;AllowUserVariables=true;Persist Security Info=True

Server,host, data source, datasource, address, addr, network address: 数据库位置(以上任何关键字均可)

Database,initial catalog:数据库名

Port:        socket 端口,默认 3306

ConnectionProtocol,protocol:    连接协议,默认 Sockets

PipeName,pipe:        连接管道,默认 MYSQL

UseCompression,compress:    连接是否压缩,默认 false

AllowBatch:    是否允许一次执行多条SQL语句,默认 true

Logging:    是否启用日志,默认 false

SharedMemoryName:内存共享的名称,默认 MYSQL

UseOldSyntax,old syntax, oldsyntax:是否兼容旧版的语法,默认 false

ConnectionTimeout,connection timeout:连接超时等待时间,默认15s

DefaultCommandTimeout,command timeout:MySqlCommand 超时时间,默认 30s

UserID, uid, username, user name, user:数据库登录帐号

Password,pwd:    登录密码

PersistSecurityInfo:是否保持敏感信息,默认 false

Encrypt:已经用 SSL 替代了,默认 false

CertificateFile:证书文件(.pfx)格式

CertificatePassword:证书的密码

CertificateStoreLocation:证书的存储位置

CertificateThumbprint:证书指纹

AllowZeroDateTime:日期时间能否为零,默认 false

ConvertZeroDateTime:为零的日期时间是否转化为 DateTime.MinValue,默认 false

UseUsageAdvisor, usage advisor:是否启用助手,会影响数据库性能,默认 false

ProcedureCacheSize,procedure cache, procedurecache:同一时间能缓存几条存储过程,0为禁止,默认 25

UsePerformanceMonitor,userperfmon, perfmon:是否启用性能监视,默认 false

IgnorePrepare:    是否忽略 Prepare() 调用,默认 true

UseProcedureBodies,procedure bodies:是否检查存储过程体、参数的有效性,默认 true

AutoEnlist:    是否自动使用活动的连接,默认 true

RespectBinaryFlags:是否响应列上元数据的二进制标志,默认 true

TreatTinyAsBoolean:是否将 TINYINT(1) 列视为布尔型,默认 true

AllowUserVariables:是否允许 SQL 中出现用户变量,默认 false

InteractiveSession,interactive:会话是否允许交互,默认 false

FunctionsReturnString:所有服务器函数是否按返回字符串处理,默认 false

UseAffectedRows:是否用受影响的行数替代查找到的行数来返回数据,默认 false

OldGuids:    是否将 binary(16) 列作为 Guids,默认 false

Keepalive:    保持 TCP 连接的秒数,默认0,不保持。

ConnectionLifeTime:连接被销毁前在连接池中保持的最少时间(秒)。默认 0

Pooling:    是否使用线程池,默认 true

MinimumPoolSize, min pool size:线程池中允许的最少线程数,默认 0

MaximumPoolSize,max pool size:线程池中允许的最多线程数,默认 100

ConnectionReset:连接过期后是否自动复位,默认 false

CharacterSet, charset:向服务器请求连接所使用的字符集,默认:无

TreatBlobsAsUTF8:binary blobs 是否按 utf8 对待,默认 false

BlobAsUTF8IncludePattern:列的匹配模式,一旦匹配将按 utf8 处理,默认:无

SslMode:    是否启用 SSL 连接模式,默认:MySqlSslMode.None

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql> select concat('11','22','33'); +------------------------+ | concat('11','22','33') | +------------------------+ | 112233 | +------------------------+ 1 row in set (0.00 sec) MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL mysql> select concat('11','22',null); +------------------------+ | concat('11','22',null) | +------------------------+ | NULL | +------------------------+ 1 row in set (0.00 sec) MySQL中concat_ws函数 使用方法: CONCAT_WS(separator,str1,str2,...) CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。 注意: 如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。 如连接后以逗号分隔 mysql> select concat_ws(',','11','22','33'); +-------------------------------+ | concat_ws(',','11','22','33') | +-------------------------------+ | 11,22,33 | +-------------------------------+ 1 row in set (0.00 sec) 和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL mysql> select concat_ws(',','11','22',NULL); +-------------------------------+ | concat_ws(',','11','22',NULL) | +-------------------------------+ | 11,22 | +-------------------------------+ 1 row in set (0.00 sec) MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔(默认) mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,分号分隔 mysql> select id,group_concat(name separator ';') from aa group by id; +------+----------------------------------+ | id| group_concat(name separator ';') | +------+----------------------------------+ |1 | 10;20;20 | |2 | 20| |3 | 200;500 | +------+----------------------------------+ 3 rows in set (0.00 sec) 以id分组,把去冗余的name字段的值打印在一行, 逗号分隔 mysql> select id,group_concat(distinct name) from aa group by id; +------+-----------------------------+ | id| group_concat(distinct name) | +------+-----------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序 mysql> select id,group_concat(name order by name desc) from aa group by id; +------+---------------------------------------+ | id| group_concat(name order by name desc) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec) repeat()函数 用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数 mysql> select repeat('ab',2); +----------------+ | repeat('ab',2) | +----------------+ | abab | +----------------+ 1 row in set (0.00 sec) 又如 mysql> select repeat('a',2); +---------------+ | repeat('a',2) | +---------------+ | aa | +---------------+ 1 row in set (0.00 sec) mysql向表中某字段后追加一段字符串: update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串 update table_name set field=CONCAT('str',field) 这个函数对你也许会有很大帮助哦!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值