/// <summary> /// 创建 Sql Server 数据表 /// </summary> /// <param name="table">数据表信息</param> /// <param name="connection">数据库连接</param> /// <returns></returns> public static string createTable(DBTable table, DBConnection connection) { string err = ""; List <string> sql_list = table.getCreateTableSqlList(connection.db_type); for (int i = 0; i < sql_list.Count; i++) { var msg = DBQuery.execute(sql_list[i], connection); err += msg; } return(err); }
/// <summary> /// 将新的数据库版本号更新到数据库相关表中, 需继承实现 /// </summary> /// <param name="connection"></param> /// <returns>错误信息</returns> public virtual string updateNewVersionInfoToDB(DBConnection connection) { var query = "delete from sys_configuration where param_name='current_db_version'"; var msg = DBQuery.execute(query, connection); if (msg.hasContents()) { return(msg); } query = "insert into sys_configuration (param_name,param_value) values ('current_db_version','" + db_version.db_version + "')"; return(DBQuery.execute(query, connection)); }
/// <summary> /// 初始化数据库 /// </summary> /// <param name="connection"></param> /// <param name="reference_path"></param> /// <returns></returns> public static string initialize(DBConnection connection, string reference_path) { string msg = createDatabase(connection); if (msg != "") { return(msg); } List <DBTable> tables = new List <DBTable>(); try { string[] table_paths = Directory.GetFiles(reference_path, "*.table"); foreach (string table_p in table_paths) { DBTable tb = DBTable.fromXmlFile(table_p); if (tb.table_name != "") { tables.Add(tb); } } } catch { } if (tables.Count == 0) { msg = "无法获取可用的表描述文件!"; return(msg); } string table_err = ""; foreach (DBTable table in tables) { table_err += createTable(table, connection); } msg += table_err; //初始化数据库版本号 DBInitDataConfig config = new DBInitDataConfig(); config.loadFrom(reference_path); if (config.CurrentDBVersion != "1.0.0") { var query = "insert into " + config.configuration_table_name + " (" + config.configuration_key_column + "," + config.configuration_value_column + ") values ('" + config.configuration_db_version_key + "','" + config.CurrentDBVersion + "')"; DBQuery.execute(query, connection); } //初始化数据 List <DBInitDataProfile> data = new List <DBInitDataProfile>(); try { string[] data_paths = Directory.GetFiles(reference_path, "*.data"); foreach (string data_p in data_paths) { DBInitDataProfile dp = DBInitDataProfile.fromXMLFile(data_p); if (dp.table_name.Length > 0) { data.Add(dp); } } } catch { } if (data.Count > 0) { foreach (DBInitDataProfile profile in data) { profile.insertAllData(); } } return(msg); }