修改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. Python语法糖

    1.装饰器 ####装饰器的固定格式 ##普通版本 def timer(func): def inner(*args,**kwargs): '''执行函数之前要做的''' ret = func(*ar ...

  2. spring入门(六) spring mvc+mybatis

    1.引入依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> < ...

  3. JDBC相关

    //原生jdbc操作案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; i ...

  4. 关于okHttp框架的使用

    在之前的项目中,使用传统的HttpClient来返回一个图片信息流的时候总是报错,最后发现是因为传统的传输方式会对流的大小有限制,当超过某个值的时候就会报异常,最后决定使用OkHttp框架来解决这个问 ...

  5. PyCharm+QT Designer整合

    CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分 ...

  6. 让UltraEdit-32成为Delphi 7编译器的工具设置

    UltraEdit-32编译Delphi的工具设置 {================================================}Dcc32 命令行(&C):C:\Pro ...

  7. 我是一个MySQL小白

    我是一个MySQL小白 第一回早起装扮 “mysql,Oracle,SQL-SERVER你们三个 起床没?”,清晨七点多师父喊道. “师父,我(mysql)哪敢睡觉呀,我还在查询表呢,有客户的密码忘记 ...

  8. Leecode刷题之旅-C语言/python-83删除排序链表中的重复元素

    /* * @lc app=leetcode.cn id=83 lang=c * * [83] 删除排序链表中的重复元素 * * https://leetcode-cn.com/problems/rem ...

  9. ctf题目writeup(3)

    题目地址: https://www.ichunqiu.com/battalion 1. 这个是个mp3,给的校验是为了下载下来的. 下来之后丢进audicity中 放大后根据那个音块的宽度来确定是 . ...

  10. poj_2339

    参考:https://blog.csdn.net/yzl_rex/article/details/7600906 https://blog.csdn.net/acm_JL/article/detail ...