0

我的应用程序需要两个单位(SIUS)的数据库。一旦用户选择使用SI单位,退出时我需要将值转换为US并将其保存在 US DB

假设用户选择(SI 单位)并对其中一个表格上的变量 THickness 进行一些编辑。

退出时,我也应该将这些保存在 SI 单位数据库中。目前,该程序仅在一个数据库中执行所有保存输入....和其他内容。

关于如何实现这一点的任何输入都会很好

这是我到目前为止所做的 在退出时,为模式创建创建另一个连接,

private void btnExit_Click(object sender, EventArgs e)
{
    DbConnection c = CreateConnectionForSchemaCreation("STAR-SI.Sqlite");
    this.Close();   
}

public DbConnection CreateConnectionForSchemaCreation(string fileName)
{
    var connOther = new SQLiteConnection();
    connOther.ConnectionString = new DbConnectionStringBuilder()
    {
        {"Data Source", fileName},
        {"Version", "3"},
        {"FailIfMissing", "False"},
    }.ConnectionString;

    connOther.Open();
    return connOther;
}
4

2 回答 2

2

如果用户来回转换多次怎么办?似乎每次用户切换单位时都必须重新生成数据库是不必要的复杂。

SI 单位的每个可能选择与美国测量中的相应选择之间是否存在明确的 1:1 映射?

我会建议以下之一:

  • 如果存在 1:1 映射,则以 SI 或 US 单位之一存储,并在需要时转换为应用层中的另一个
  • 如果没有 1:1 映射,则在单个数据库中为 SI 和 US 单位设置可为空的列。将用户的选择存储在适当的列中,并将另一列设为空。
于 2012-08-07T16:51:53.257 回答
0

执行此操作的方法错误,您应该将 UnitOfMeasure 字段与值一起存储。

例如

"Weight 1",1,"kilogram"
"Weight 2",2.2,"lb"

然后在用户的个人资料中,他们偏好 SI 或 US,您可以根据数据操作的需要进行转换。

几个数据库函数、一个额外的列、一个保存 UOM 的表和一个用于转换的表,工作完成。

更不用说您可以处理系统转换,例如 16 盎司到英镑等,这些代码几乎完全相同。

于 2012-08-07T17:22:35.997 回答