我试图通过连接用户company+自动生成的id来生成一个唯一的id
我的字母数字输出为“snc001”,但当我试图生成下一个id时,出现以下错误:
从字符串“snc001”到类型“integer”的转换无效。
注:“snc”来自这个frm\u main\u menu.lblcompany.text
Dim maxid As Object
Dim strid As String
Dim intid As Integer
Dim cmdid As New MySqlCommand
cmdid.Connection = cnn_MYSQL
cmdid.CommandText = "SELECT MAX(printed_id) as maxid FROM imports"
maxid = cmdid.ExecuteScalar
If maxid Is DBNull.Value Then
intid = "001"
Else
strid = CType(maxid, String)
intid = CType(strid, String)
intid = intid + 1
End If
Dim autoid As String = frm_Main_Menu.lblCompany.Text & intid.ToString().PadLeft(3, "001")
Dim cmd66 As New MySqlCommand
cmd66.Connection = cnn_MYSQL
cmd66.CommandText = "UPDATE imports " & _
" SET printed='" & "Y" & "', printed_id='" & autoid & "'" & _
" WHERE TIN = '" & id_selected &"'"
cmd66.ExecuteNonQuery()
1条答案
按热度按时间5jvtdoz21#
您正在分配整个id段
String
键入到Integer
字段/变量,这是完全错误的InvalidCastException
:正确的方法是使用
Substring()
从数字部分(即索引为3的第4个元素)开始,用以下任一方法将余数转换为整数Convert.ToInt32()
或者Integer.Parse()
方法:旁注:
最好使用参数化查询而不是字符串连接来构建查询,请参见下面的示例: