codesmith用access的mdb文件作数据源的模板引用
2009-01-06 18:41
274 查看
从blog.org的我的原博客中迁入
发表时间:2006-9-7 11:10:32
codesmith是一款运用非常文泛,也是功能强大的代码生成工具,但查遍整个baidu,google,很难找到其与access或mdb相关联的资料.经反复验证,方法如下:
在schema explorer上点manage data sources按钮出现对话框 ,在对话框中点add按钮,增加一个连接,在provider type中选ADOXSchemaProviderdb,在连接字符串中输入Provider=Microsoft.Jet.OLEDB.4.0;Data Source=路径+文件名,最后点test看连接是否正确.
从blog.org的我的原博客中迁入
续:前
发表时间:2006-9-7 17:12:28
CodeTemplateRule.cs
using System;
using System.Text;
using System.ComponentModel;
using CodeSmith.Engine;
using System.Data;
using SchemaExplorer;
namespace CodeTemplateRule
{
/**//// <summary>
/// CodeSmith自动生成代码所用到的函数
/// </summary>
public class CodeTemplateRule
{
/**//// <summary>
/// 获取所有列的集合
/// </summary>
/// <param name="dataBase">数据库Schema</param>
/// <param name="tableName">表名</param>
/// <returns>Columns Schema</returns>
public ColumnSchemaCollection GetColumnCollection(DatabaseSchema dataBase,string tableName)
{
TableSchemaCollection tables = new TableSchemaCollection(dataBase.Tables);
ColumnSchemaCollection columns=null;
for(int i=0;i<tables.Count;i++)
{
if(tables[i].Name.ToUpper()==tableName.ToUpper())
{
TableSchema ts=tables[i];
columns=new ColumnSchemaCollection(ts.Columns);
}
}
return columns;
}
/**//// <summary>
/// 获取处理后的表名 例如:ORG_Person,返回Person
/// </summary>
/// <param name="tableName">表名</param>
/// <returns>返回处理后的表名</returns>
public string GetTableName(string tableName)
{
int i=tableName.IndexOf("_");
return tableName.Substring(i+1,tableName.Length-(i+1));
}
/**//// <summary>
/// 获取唯一号的变量名,第一个字母小写
/// </summary>
/// <param name="guidColumn">唯一号列名</param>
/// <returns>唯一号的变量名</returns>
public string GetGuidColumnVar(string guidColumn)
{
string guid;
guid=guidColumn.Substring(0,1).ToLower()+guidColumn.Substring(1,guidColumn.Length-1);
return guid;
}
/**//// <summary>
/// 获取c#变量类型
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型</returns>
public string GetType(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "int";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetDefaultValue(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "/"/"";
case DbType.AnsiStringFixedLength: return "/"/"";
case DbType.Binary: return "null";
case DbType.Boolean: return "false";
case DbType.Byte: return "0";
case DbType.Currency: return "0";
case DbType.Date: return "DateTime.Parse(/"1900-1-1/")";
case DbType.DateTime: return "DateTime.Parse(/"1900-1-1/")";
case DbType.Decimal: return "0";
case DbType.Double: return "0";
case DbType.Guid: return "Guid.NewGuid().ToString()";
case DbType.Int16: return "0";
case DbType.Int32: return "0";
case DbType.Int64: return "0";
case DbType.Object: return "/"/"";
case DbType.SByte: return "0";
case DbType.Single: return "0";
case DbType.String: return "/"/"";
case DbType.StringFixedLength: return "";
case DbType.Time: return "DateTime.Parse(/"1900-1-1/")";
case DbType.UInt16: return "0";
case DbType.UInt32: return "0";
case DbType.UInt64: return "0";
case DbType.VarNumeric: return "0";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetConvert(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "Convert.ToString";
case DbType.AnsiStringFixedLength: return "Convert.ToString";
case DbType.Binary: return "Convert.ToByte";
case DbType.Boolean: return "Convert.ToBoolean";
case DbType.Byte: return "Convert.ToInt32";
case DbType.Currency: return "Convert.ToDecimal";
case DbType.Date: return "Convert.DateTime";
case DbType.DateTime: return "Convert.DateTime";
case DbType.Decimal: return "Convert.ToDecimal";
case DbType.Double: return "Convert.ToDouble";
case DbType.Guid: return "Convert.ToString";
case DbType.Int16: return "Convert.ToInt16";
case DbType.Int32: return "Convert.ToInt32";
case DbType.Int64: return "Convert.ToInt64";
case DbType.Object: return "Convert.ToString";
case DbType.SByte: return "Convert.ToByte";
case DbType.Single: return "Convert.ToInt32";
case DbType.String: return "Convert.ToString";
case DbType.StringFixedLength: return "Convert.ToString";
case DbType.Time: return "Convert.DateTime";
case DbType.UInt16: return "Convert.ToUInt16";
case DbType.UInt32: return "Convert.ToUInt32";
case DbType.UInt64: return "Convert.ToUInt64";
case DbType.VarNumeric: return "Convert.ToDecimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
}
}
发表时间:2006-9-7 11:10:32
codesmith是一款运用非常文泛,也是功能强大的代码生成工具,但查遍整个baidu,google,很难找到其与access或mdb相关联的资料.经反复验证,方法如下:
在schema explorer上点manage data sources按钮出现对话框 ,在对话框中点add按钮,增加一个连接,在provider type中选ADOXSchemaProviderdb,在连接字符串中输入Provider=Microsoft.Jet.OLEDB.4.0;Data Source=路径+文件名,最后点test看连接是否正确.
从blog.org的我的原博客中迁入
续:前
发表时间:2006-9-7 17:12:28
CodeTemplateRule.cs
using System;
using System.Text;
using System.ComponentModel;
using CodeSmith.Engine;
using System.Data;
using SchemaExplorer;
namespace CodeTemplateRule
{
/**//// <summary>
/// CodeSmith自动生成代码所用到的函数
/// </summary>
public class CodeTemplateRule
{
/**//// <summary>
/// 获取所有列的集合
/// </summary>
/// <param name="dataBase">数据库Schema</param>
/// <param name="tableName">表名</param>
/// <returns>Columns Schema</returns>
public ColumnSchemaCollection GetColumnCollection(DatabaseSchema dataBase,string tableName)
{
TableSchemaCollection tables = new TableSchemaCollection(dataBase.Tables);
ColumnSchemaCollection columns=null;
for(int i=0;i<tables.Count;i++)
{
if(tables[i].Name.ToUpper()==tableName.ToUpper())
{
TableSchema ts=tables[i];
columns=new ColumnSchemaCollection(ts.Columns);
}
}
return columns;
}
/**//// <summary>
/// 获取处理后的表名 例如:ORG_Person,返回Person
/// </summary>
/// <param name="tableName">表名</param>
/// <returns>返回处理后的表名</returns>
public string GetTableName(string tableName)
{
int i=tableName.IndexOf("_");
return tableName.Substring(i+1,tableName.Length-(i+1));
}
/**//// <summary>
/// 获取唯一号的变量名,第一个字母小写
/// </summary>
/// <param name="guidColumn">唯一号列名</param>
/// <returns>唯一号的变量名</returns>
public string GetGuidColumnVar(string guidColumn)
{
string guid;
guid=guidColumn.Substring(0,1).ToLower()+guidColumn.Substring(1,guidColumn.Length-1);
return guid;
}
/**//// <summary>
/// 获取c#变量类型
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型</returns>
public string GetType(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "int";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetDefaultValue(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "/"/"";
case DbType.AnsiStringFixedLength: return "/"/"";
case DbType.Binary: return "null";
case DbType.Boolean: return "false";
case DbType.Byte: return "0";
case DbType.Currency: return "0";
case DbType.Date: return "DateTime.Parse(/"1900-1-1/")";
case DbType.DateTime: return "DateTime.Parse(/"1900-1-1/")";
case DbType.Decimal: return "0";
case DbType.Double: return "0";
case DbType.Guid: return "Guid.NewGuid().ToString()";
case DbType.Int16: return "0";
case DbType.Int32: return "0";
case DbType.Int64: return "0";
case DbType.Object: return "/"/"";
case DbType.SByte: return "0";
case DbType.Single: return "0";
case DbType.String: return "/"/"";
case DbType.StringFixedLength: return "";
case DbType.Time: return "DateTime.Parse(/"1900-1-1/")";
case DbType.UInt16: return "0";
case DbType.UInt32: return "0";
case DbType.UInt64: return "0";
case DbType.VarNumeric: return "0";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
/**//// <summary>
/// 获取c#变量类型默认值
/// </summary>
/// <param name="column">列</param>
/// <returns>c#变量类型默认值</returns>
public string GetConvert(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "Convert.ToString";
case DbType.AnsiStringFixedLength: return "Convert.ToString";
case DbType.Binary: return "Convert.ToByte";
case DbType.Boolean: return "Convert.ToBoolean";
case DbType.Byte: return "Convert.ToInt32";
case DbType.Currency: return "Convert.ToDecimal";
case DbType.Date: return "Convert.DateTime";
case DbType.DateTime: return "Convert.DateTime";
case DbType.Decimal: return "Convert.ToDecimal";
case DbType.Double: return "Convert.ToDouble";
case DbType.Guid: return "Convert.ToString";
case DbType.Int16: return "Convert.ToInt16";
case DbType.Int32: return "Convert.ToInt32";
case DbType.Int64: return "Convert.ToInt64";
case DbType.Object: return "Convert.ToString";
case DbType.SByte: return "Convert.ToByte";
case DbType.Single: return "Convert.ToInt32";
case DbType.String: return "Convert.ToString";
case DbType.StringFixedLength: return "Convert.ToString";
case DbType.Time: return "Convert.DateTime";
case DbType.UInt16: return "Convert.ToUInt16";
case DbType.UInt32: return "Convert.ToUInt32";
case DbType.UInt64: return "Convert.ToUInt64";
case DbType.VarNumeric: return "Convert.ToDecimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
}
}
相关文章推荐
- codesmith用access的mdb文件作数据源的模板引用
- 【CodeSmith学习笔记】:特殊字符如何包含在模板中和模板引用其他文件
- IEEE 参考文献bib文件最常引用模板
- infopath2007-2013直接连接数据源(Access或Sqlserver)设计表单模板
- mygeneration中自己做的winform模板,用于eco的输入,access数据源
- access 2007打开mdb文件时需要密码,打开每一个mdb文件都需要,这些文件并没有设置密码
- Discuz!开发之模板支持引用php文件的方法
- Spring的数据源引用问题,拆分配置文件
- Access文件(.mdb)导入SQL Server时"错误代码为 0xC0202009"的解决方法
- Access 2003数据库规格以及空数据库的.mdb文件很大的情况
- CodeSmith将模板文件批量生成文件的方法 - 空空如也 - 博客园
- [转载]matlab读取Access数据(.mdb文件)
- springmvc_mybatis配置文件解析,解决数据源引用报错问题
- 如何在ASP+Access应用中防范mdb文件被下载。
- 从oracle中导出数据到access中,以mdb格式导出文件
- winform 批量导入本地sql文件,批量导入mdb(access)文件到sqlserver
- Access文件(.mdb)导入SQL Server时"错误代码为 0xC0202009"的解决方法
- 多分组 多主题 跨分组模板文件引用问题
- ABAP通过OLEDB读取本地Access(MDB)文件
- 在没有安装access的电脑上读写.mdb文件