Previous topicNext topic
Help > 使用指南 > 数据管理模块 > 数据库对象管理 >
用代码创建表对象
在本平台,我们可以用最简单的方式实现不同场景、不同数据库之间进行同步数据结构、同步数据。比如自己做的软件第一版已经给客户了。第二版中,软件的结构有一些变动。如果客户那边直接升级软件的话,因为系统相关的表结构变动,肯定会有异常。这样就可以用我这个模块进行同步表结构及相应的数据。我们甚至可以把新版的数据结构放到一个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