修改C:\Program Files (x86)\CodeSmith\v6.5\Samples\Projects\CSharp\MySQLSchemaProvider\MySQLSchemaProvider.cs

修改GetCommandParameters方法,原本是没有实现的。一直报错误信息:GetCommandParameters() is not supported in this release.

        /// <summary>
/// Gets the parameters for a given command.
/// </summary>
/// <param name="connectionString">The connection string used to connect to the target database.</param>
/// <param name="command"></param>
/// <returns></returns>
public ParameterSchema[] GetCommandParameters( string connectionString, CommandSchema command )
{
// MySQL does not yet implement INFORMATION_SCHEMA.PARAMETERS
// MySQL Connector/Net 1.0.7 is supposed to support DeriveParameters()
// However, in my testing there appears to be a bug (throws a NULL reference exception)
// This method will be unsupported until a subsequent release of DeriverParameters()
// is working. // throw new NotSupportedException( "GetCommandParameters() is not supported in this release." ); /*
ArrayList a = new ArrayList();
ParameterSchema ps;
DbConnection cnx = null;
DbCommand cmd = null;
try
{
cnx = new DbConnection(connectionString); cmd = new DbCommand(command.Name, cnx);
cmd.CommandType = CommandType.StoredProcedure; cnx.Open();
IDbCommandBuilder.DeriveParameters(cmd);
cnx.Close(); foreach(MySqlParameter param in cmd.Parameters)
{
ps = new ParameterSchema(command, param.ParameterName, param.Direction, param.DbType,
param.MySqlDbType.ToString(), param.Size, param.Precision, param.Scale, param.IsNullable); a.Add(ps);
} }
catch
{
throw;
}
finally
{
if (cnx != null)
cnx.Close();
} return (ParameterSchema[]) a.ToArray(typeof (ParameterSchema));
*/ string commandText = string.Format("SELECT PARAMETER_NAME, DATA_TYPE, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION,"
+ " NUMERIC_SCALE, 0 IS_NULLABLE, PARAMETER_MODE"
+ " FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_SCHEMA = '{0}' AND SPECIFIC_NAME = '{1}' AND ROUTINE_TYPE = 'PROCEDURE' ORDER BY ORDINAL_POSITION", command.Database.Name, command.Name);
List<ParameterSchema> parameterSchema = new List<ParameterSchema>(); using (DbConnection connection = CreateConnection(connectionString))
{
connection.Open(); DbCommand cmd = connection.CreateCommand();
cmd.CommandText = commandText;
cmd.Connection = connection; using (IDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
string name = reader.GetString( );
string nativeType = reader.GetString( );
long longSize = ( reader.IsDBNull( ) == false ) ? reader.GetInt64( ) : ;
byte precision = ( byte ) ( ( reader.IsDBNull( ) == false ) ? reader.GetInt32( ) : );
int scale = ( reader.IsDBNull( ) == false ) ? reader.GetInt32( ) : ;
bool isNullable = ( reader.IsDBNull( ) == false ) && reader.GetBoolean( );
string direction = reader.GetString( );
ParameterDirection paramDirection = ParameterDirection.Input;
switch(direction)
{
case "IN":
paramDirection = ParameterDirection.Input;
break;
case "OUT":
paramDirection = ParameterDirection.Output;
break;
case "INOUT":
paramDirection = ParameterDirection.InputOutput;
break;
default:
paramDirection = ParameterDirection.Input;
break;
}
int size = ( longSize < int.MaxValue ) ? ( int ) longSize : int.MaxValue; bool isUnsigned = ( nativeType.IndexOf( "unsigned" ) > - );
DbType type = GetDbType( nativeType, isUnsigned ); parameterSchema.Add(new ParameterSchema(command,name,paramDirection,type,nativeType,size,precision,scale,isNullable));
} if (!reader.IsClosed)
reader.Close();
} if (connection.State != ConnectionState.Closed)
connection.Close();
} return parameterSchema.ToArray();
}

编译后生成SchemaExplorer.MySQLSchemaProvider.dll,覆盖程序安装目录中SchemaProviders目录的同名文件。

修改后替换目录(C:\Program Files (x86)\CodeSmith\v6.5\SchemaProviders\SchemaExplorer.MySQLSchemaProvider.dll)中的同名文件。

启动CodeSmith后,需要在Schema Explorer中删除原来的MySQL数据库,重新添加,不然会报错。

也可以先卸载GAC中的SchemaExplorer.MySQLSchemaProvider.dll,然后将自己修改、编译并签名后的SchemaExplorer.MySQLSchemaProvider.dll安装到GAC中。

修改CodeSmith中的SchemaExplorer.MySQLSchemaProvider的更多相关文章

  1. CodeSmith中SchemaExplorer属性的介绍

    CodeSmith与数据库的联系,在CodeSmith中自带一个程序集SchemaExplorer.dll,这个程序集中的类主要用于获取数据库中各种对象的结构. <%@ Property Nam ...

  2. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  3. Java反射机制可以动态修改实例中final修饰的成员变量吗?

    问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...

  4. 何修改WAMP中mysql默认空密码--转

    何修改WAMP中mysql默认空密码  http://www.cnblogs.com/hooray/archive/2011/07/23/2114792.html WAMP安装好后,mysql密码是为 ...

  5. 使用jquery修改css中带有!important的样式属性

    当CSS中含有!important的样式属性时,普通的修改方式是会出现失败的.如下: <div class="test">使用jquery修改css中带有!import ...

  6. 以NameValueCollection 修改URL中的查询参数

    以NameValueCollection 修改URL中的查询参数 本文参考于:http://www.c-sharpcorner.com/Blogs/9421/add-remove-or-modify- ...

  7. 修改数据库中group_concat的返回结果的长度限制

    修改数据库中group_concat的返回结果的长度限制 我们可以使用Mysql的客户端管理工具,Sqlyog 新建一个查询编辑器 显示  SHOW VARIABLES LIKE "grou ...

  8. 修改Android中strings.xml文件, 动态改变数据

    有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法.strings.xml中节点是支持占位符的,如下所示: <string name=&qu ...

  9. SVNKIT的low api应用之修改库中文件内容(File modification)

    最近在做一个仓库管理系统,架构在svn之上.要求每一项操作要记录在log文件中,弄了很久起初感觉无法向库中的文本文件添加东西,就是修改库中的文本文件.于是采用了一个很笨的办法:    现将库中的log ...

随机推荐

  1. P1330 封锁阳光大学 DFS+染色

    题目链接:https://www.luogu.org/problemnew/show/P1330 这个题有意思,如果能想到染色,就会很简单,但若想不到就很麻烦 要想把一条边封锁,就必须且只能占据这条边 ...

  2. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  3. Git 项目提交代码及一些常用命令

    在dev_ysg分支 : git add . //把项目添加到仓库 git commit -m "test" // 提交加注释 git push //推到dev_ysg分支上去 g ...

  4. 关于api接口

    前阵子一直疯狂的找关于php的api接口方面的资料来学习,总结了一下,无非就是请求数据,然后返回数据,当然也要设置相关安全措施,比如认证口令 等.返回数据格式是json 还是xml 看自己需求咯

  5. Leecode刷题之旅-C语言/python-26.移除元素

    /* * @lc app=leetcode.cn id=27 lang=c * * [27] 移除元素 * * https://leetcode-cn.com/problems/remove-elem ...

  6. 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

    SELECT S# as 学生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库 ,(SELECT score FROM S ...

  7. 关于PHP性能提升踩过的一些坑

        性能这个东西,在网站规模到达一定程度后,会是一个永恒的主题.关于这方面,本人有一些拙见,现在拿出来,大家一起探讨下.     1.编码过程中,传递参数时,尽量少使用‘引用传参’.这是一个巨坑啊 ...

  8. grunt in webstorm

    1.install grunt sudo npm install -g grunt-cli npm install grunt --save-dev

  9. MySQL 从入门到删库

    基本操作 登陆指令 mysql -u用户名 -p密码(可以非明文输入) -h主机/IP -D端口 --prompt 提示符 修改提示符 \D 日期 \d 当前数据库 \h 服务器名 \u 用户名 // ...

  10. 【转】使用git提交项目到码云

    一.git安装 1.首先在官方网站下载git工具,或者根据以下链接进行下载:http://download.csdn.net/detail/qq_27501889/9788879(此链接版本为git- ...