我确定此问题之前已得到解答,但有时我需要用自己的话来理解答案。
我最近遇到了一个问题,即在计算机上使用捷克语的人无法运行我的应用程序,我使用美国英语。
我在SQLite数据库中将一些十进制值保存为字符串。我猜捷克语不喜欢我的小数(1.50),因为它在尝试将其从字符串解析为十进制时崩溃。它只是没有将1.50识别为小数的正确格式。
我希望能够轻松解决问题,有人建议强制本地化文化进入美国。我做了一些研究并且非常困惑,我希望有人能帮助我理解如何解决这个问题。
谢谢
加载SQLite数据:
Public Shared Sub LoadAutoBetting()
Dim SQLstr As String = "Select * FROM AutoBetting"
Dim connection As String = "Data Source=utb.db;Version=3"
Dim SQLConn As New SQLiteConnection
Dim SQLcmd As New SQLiteCommand
Dim SQLdr As SQLiteDataReader
SQLConn.ConnectionString = connection
SQLConn.Open()
SQLcmd.Connection = SQLConn
SQLcmd.CommandText = SQLstr
SQLdr = SQLcmd.ExecuteReader()
While SQLdr.Read()
Bets.autoMulti = SQLdr(0)
End While
SQLdr.Close()
SQLConn.Close()
End Sub
在Bets.autoMulti = SQLdr(0)
弹出的错误autoMulti是一个小数,SQLdr(0)是一个字符串(1.50),这是我在创建表时插入的默认值。
答案 0 :(得分:0)
我的经验是vb严重依赖于windows区域设置。可能它期望一个','作为小数分隔符。这不仅仅是捷克共和国的情况。这在欧洲很常见。使用日期格式(dd / mm / YYYY,dd.mm.YYYY,mm / dd / YYYY,YYYY-mm-dd,...)时会弹出同样的问题。
您可以根据区域设置编写自己的函数来解析sql查询结果中的字符串。
答案 1 :(得分:-1)
将文化显式化,包括将小数写入字符串以及将其读回时。好的选择可能是“InvariantCulture”,实际上是美国。
当您依赖“当前”文化(在PC上)时,您会遇到麻烦,因为您无法知道未来潜在用户可能会选择什么。