/// <summary>
/// 数据库类型映射关系(数据库类型、C#类型、默认值、读取函数)
/// </summary>
string [,] DataTypeMapping = {
{"NVARCHAR","String", "null", "ToString"},
{"CHAR","String", "null", "ToString"},
{"INT","int", "0", "ToInt"},
{"INTEGER","int", "0", "ToInt"},
{"NUMERIC","Double", "0", "ToDouble"},
{"FLOAT","Double", "0", "ToDouble"},
{"DATE","DateTime?", "null", "ToDateTime"},
{"BLOB","Byte[]", "null", "ToByte"},
{"BFILE","Byte[]", "null", "ToByte"},
{"IMAGE","Byte[]", "null", "ToByte"}
};
/// <summary>
/// 获取字段的类型
/// </summary>
/// <param name="fieldDataType">数据库字段类型</param>
/// <returns>类型</returns>
private string GetDataType(string fieldDataType, ref string defaultValue)
{
// 这是默认值
string returnValue = typeof(string).Name.ToString();
defaultValue = "null";
// 这个是差找对比
for (int i = 0; i < DataTypeMapping.GetLength(0); i++)
{
if (fieldDataType.IndexOf(DataTypeMapping[i, 0]) >= 0)
{
returnValue = DataTypeMapping[i, 1];
defaultValue = DataTypeMapping[i, 2];
// 不循环了,提高效率
break;
}
}
return returnValue;
}
private string GetDataType(string fieldDataType)
{
// 这是默认值
string returnValue = typeof(string).Name.ToString();
// 这个是差找对比
for (int i = 0; i < DataTypeMapping.GetLength(0); i++)
{
if (fieldDataType.IndexOf(DataTypeMapping[i, 0]) >= 0)
{
returnValue = DataTypeMapping[i, 1];
// 不循环了,提高效率
break;
}
}
return returnValue;
}
private string GetColumnDataType(XmlNode xmlNode, string columnName)
{
string fieldDataType = string.Empty;
for (int i = 0; i < xmlNode.ChildNodes.Count; i++)
{
if (((XmlNode)xmlNode.ChildNodes[i]).LocalName.Equals("Columns"))
{
for (int j = 0; j < xmlNode.ChildNodes[i].ChildNodes.Count; j++)
{
string field = xmlNode.ChildNodes[i].ChildNodes[j].ChildNodes[2].InnerText;
if (field.Equals(columnName))
{
for (int z = 0; z < xmlNode.ChildNodes[i].ChildNodes[j].ChildNodes.Count; z++)
{
if (xmlNode.ChildNodes[i].ChildNodes[j].ChildNodes[z].LocalName.Equals("DataType"))
{
// 字段类型大写
fieldDataType = xmlNode.ChildNodes[i].ChildNodes[j].ChildNodes[z].InnerText.ToUpper();
break;
}
}
break;
}
}
break;
}
}
return GetDataType(fieldDataType);
}
private string GetConvertFunction(string fieldDataType)
{
// 这是默认值
string returnValue = "ToString";
// 这个是差找对比
for (int i = 0; i < DataTypeMapping.GetLength(0); i++)
{
if (fieldDataType.IndexOf(DataTypeMapping[i, 0]) >= 0)
{
returnValue = DataTypeMapping[i, 3];
// 不循环了,提高效率
break;
}
}
return returnValue;
}