zoukankan      html  css  js  c++  java
  • 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 in commandParameters)
    {
      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

  • 相关阅读:
    lubuntu18.04如何创建APPImage软件的桌面快捷方式
    查找一个程序所在的路径
    lubuntu18.04如何用命令行打开一个应用(application)
    linux shell(ubuntu18.04.4 LTS) autostart to change the wallpaper
    bash常用的快捷键
    mkfs格式化分区(为分区写入文件系统)
    fdisk交互
    Linux fdisk命令创建逻辑分区
    Linux fdisk命令创建扩展分区过程
    fdisk创立主分区过程
  • 原文地址:https://www.cnblogs.com/PrayzzZ/p/13810058.html
Copyright © 2011-2022 走看看