C# 根据DATATABLE自动创建数据库表

     在实际应用中,针对C#不同类型,要转换成不同数据库类型,只要修改相应的CASE语句即可,创建数据库的表名为DataTable指定的表名

日期类型请选用SqlDbType.DateTime2,用SqlDbType.DateTime有问题(肯定有好的解决办法,只是我不想再试了)

用SqlDbType.DateTime的日期类型,只要是插入数据时,会出现日期是1899-12-30号,如果你有好的办法,也欢迎告诉我

         /// <summary>
        /// 根据Datable参数,构建建表的SQL语句,仅对以下的数据类型进行处理
        /// string, int16/32/64, double, decimal, date, bool
        /// 若要处理其它类型的列,需要增加相应的case语句
        /// 日期类型需要选SqlDbType.DateTime2,用SqlDbType.DateTime有问题
        /// </summary>
        /// <param name="pDt"></param>
        /// <returns></returns>
        public static string ConstructCreateTableSql(DataTable pDt)
        {
            string sql = "";
            sql = "CREATE TABLE " + pDt.TableName + @" (";
            foreach (DataColumn col in pDt.Columns)
            {
                sql = sql + col.ColumnName;
                // switch (Type.GetTypeCode(col.DataType))
                switch (col.DataType.Name)
                {

                    //case TypeCode.Int32:
                    //case TypeCode.Int64:
                    //case TypeCode.Int16:
                    case "Int":
                    case "Int32":
                    case "Int16":
                    case "Int64":

                        sql = sql + @"  " + SqlDbType.Int + @" ,";
                        break;


                    //case TypeCode.Decimal:
                    //case TypeCode.Double:
                    case "Decimal":
                    case "Single":
                    case "Double":
                        sql = sql + @"  " + SqlDbType.Decimal + @" ,";
                        break;


                    //case TypeCode.DateTime:
                    case "DateTime":
                    case "Date":
                        sql = sql + @"  " + SqlDbType.DateTime2 + @" ,";
                        break;

                    //case TypeCode.String:
                    case "String":
                        sql = sql + @"  " + SqlDbType.NVarChar + @" ,";
                        break;

                    //case TypeCode.Boolean:
                    case "Boolean":
                        sql = sql + @"  " + SqlDbType.Bit + @" ,";
                        break;

                    default:
                        sql = sql + @"  " + SqlDbType.NVarChar + @" ,";
                        break;
                }

            }
            sql = sql.Substring(0, sql.Length - 1) + ")";
            return sql;

        }

 

相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页