本平台目前支持MySql、SQLite、PostgreSQL、Oracle、Access、SQLServer六种数据库。而所有数据库的支持都是基于相同的抽象类,如果后期想支持其他数据库的话,也只需要简简单单地扩展一下即可。平台中根本不需要做过多的数据更改。我们的目标是,抹平多种数据库差异,最终可以达到在使用上面达到一致的体验。

1、数据管理
本平台内部集成了一个非常方便灵活的数据管理模块,我们可以通过此模块方便地对数据表进行管理。包括创建表、复制表结构、复制表数据、预览表、编辑表数据、删除表等等功能。


2、数据同步
本平台可以实现不同数据库之间进行数据结构、数据的同步。


3、视图编辑
本平台支持各个数据库SQL语句编写的智能提示,也支持相对应数据库的函数的查询。


4、可视化的视图编辑
本平台可以提供非常清晰、方便地进行视图的编写的功能。

5、简单易用的API
在本平台,我们可以用最简单的方式实现不同场景、不同数据库之间进行同步数据结构、同步数据。比如自己做的软件第一版已经给客户了。第二版中,软件的结构有一些变动。如果客户那边直接升级软件的话,因为系统相关的表结构变动,肯定会有异常。这样就可以用我这个模块进行同步表结构及相应的数据。我们甚至可以把新版的数据结构放到一个SQLite数据库中,然后再到用户那边升级。同样的,在做像超市收银系统等场景需要离线数据库时,这种模块功能也可以发挥很大的作用。另外,一些客户的运行环境必须与开发环境隔离时,此模块同样也可以发挥重要作用。

最重要的是,这里的代码针对所有的数据库数据源都是相同的写法。我们想方设法消除了数据库之间的差异性

a.新增表

 C#
Database db=Proj.SysDataFactory["UserDB"];
string strTableName = "TestTable";
TableBuilder tb = new TableBuilder(db, strTableName,false);
Col col1 = new Col("FSzTableID", tb);
col1.DataType = ChineseDataTypeEnum.备注.ToString();
tb.Columns.Add(col1);
//添加字符列
Col col3 = new Col("FSsTableName", tb);
col3.DataType = ChineseDataTypeEnum.字符.ToString();
col3.MaxLength = 36;
tb.Columns.Add(col3);
//添加逻辑列
Col col4 = new Col("逻辑列", tb);
col4.DataType = ChineseDataTypeEnum.逻辑.ToString();
tb.Columns.Add(col4);
//添加自增长列\锁定列\排序列三列特殊列
tb.AutoAddSpecialCols = true;
//获得生成新表
string strCMD = tb.GetCreateTableSQL();
//开始运行生成新表的SQL语句
try
{
    int intCount=db.ExecuteNonQuery(strCMD, true);
    if(intCount>0)
    {
        MessageBox.Show("创建表成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
}
catch (Exception ex)
{
    UnhandledExceptionManager.ShowAndSaveLog(ex);
}

 VB.Net
Dim db As Database = Proj.SysDataFactory("UserDB")
Dim strTableName As String = "TestTable"
Dim tb As TableBuilder = New TableBuilder(db, strTableName, False)
Dim col1 As Col = New Col("FSzTableID", tb)
col1.DataType = ChineseDataTypeEnum.备注.ToString()
tb.Columns.Add(col1)
'添加字符列
Dim col3 As Col = New Col("FSsTableName", tb)
col3.DataType = ChineseDataTypeEnum.字符.ToString()
col3.MaxLength = 36
tb.Columns.Add(col3)
'添加逻辑列
Dim col4 As Col = New Col("逻辑列", tb)
col4.DataType = ChineseDataTypeEnum.逻辑.ToString()
tb.Columns.Add(col4)
'添加自增长列\锁定列\排序列三列特殊列
tb.AutoAddSpecialCols = True
'获得生成新表的SQL
Dim strCMD As String = tb.GetCreateTableSQL()
'开始运行生成新表的SQL语句
Try
    Dim intCount As Integer = db.ExecuteNonQuery(strCMD, True)
    
    If intCount > 0 Then
        MessageBox.Show("创建表成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If

Catch ex As Exception
    UnhandledExceptionManager.ShowAndSaveLog(ex)
End Try

b.修改表

 C#
Database db = Proj.SysDataFactory("UserDB");
string strTableName = "TestTable";
// 当修改表结构模式时,第三个参数一定要设置为True
TableBuilder tb = new TableBuilder(db, strTableName, true);
tb.Columns("FSzTableID").DataType = ChineseDataTypeEnum.字符.ToString();
try
{
    tb.Save();
}
catch (Exception ex)
{
    UnhandledExceptionManager.ShowAndSaveLog(ex);
}

 VB.Net
Dim db As Database = Proj.SysDataFactory("UserDB")
Dim strTableName As String = "TestTable"
'当修改表结构模式时,第三个参数一定要设置为True
Dim tb As TableBuilder = New TableBuilder(db, strTableName, True) 
tb.Columns("FSzTableID").DataType=ChineseDataTypeEnum.字符.ToString()
Try
    tb.Save()
Catch ex As Exception
    UnhandledExceptionManager.ShowAndSaveLog(ex)
End Try

c.删除表

 C#
Database db = Proj.SysDataFactory("UserDB");
string strTableName = "TestTable";
// 当修改表结构模式时,第三个参数一定要设置为True
TableBuilder tb = new TableBuilder(db, strTableName);
try
{
    tb.DropTable(true);
}
catch (Exception ex)
{
    UnhandledExceptionManager.ShowAndSaveLog(ex);
}

 VB.Net
Dim db As Database = Proj.SysDataFactory("UserDB")
Dim strTableName As String = "TestTable"
Dim tb As TableBuilder = New TableBuilder(db, strTableName)
Try
    tb.DropTable(True)
Catch ex As Exception
    UnhandledExceptionManager.ShowAndSaveLog(ex)
End Try