使用vb.net在sql db中调用列的最大值
大家好!我试图获取表中某列的最大值,这样我就可以+1该值并将新值分配给另一条记录。我想得到最大值,然后把它放在一个文本框中。我也从这里得到了代码,但是我遇到了一个错误,它说“类型unsigned不是已定义的系统类型”。我做了一些研究,当我尝试将“unsigned”更改为varchar或char时,错误变为“Data is Null。此方法或属性不能对Null值调用”。当我尝试更改代码部分时,也会发生同样的情况“选择max(强制转换(productid为unsigned))”为“max(productid)”。希望您能帮助我。 以下是代码: connect.Open()使用vb.net在sql db中调用列的最大值,sql,vb.net,Sql,Vb.net,大家好!我试图获取表中某列的最大值,这样我就可以+1该值并将新值分配给另一条记录。我想得到最大值,然后把它放在一个文本框中。我也从这里得到了代码,但是我遇到了一个错误,它说“类型unsigned不是已定义的系统类型”。我做了一些研究,当我尝试将“unsigned”更改为varchar或char时,错误变为“Data is Null。此方法或属性不能对Null值调用”。当我尝试更改代码部分时,也会发生同样的情况“选择max(强制转换(productid为unsigned))”为“max(produ
您可以使用Scope_标识。只需将其添加到插入的末尾,它将返回新的ProductID
Dim ProdID As Integer
Using cn As New SqlConnection("Your connection String")
Using cmd As New SqlCommand("Insert whatever...; Select SCOPE_IDENTITY();", cn)
cn.Open()
ProdID = CInt(cmd.ExecuteScalar())
End Using
End Using
productid列的数据类型是什么?
unsigned
听起来像MySQL,但你真的在使用MySQL吗?请标记你的DBMS。还有什么数据类型是productid
?你可能应该使用identity
/auto_increment
列(语法因数据库而异)。你不应该在代码中使用这种逻辑。我实际上使用的是sql server 2012,我对使用这种逻辑是新手。我只是在网上冲浪,寻找适合我的问题的解决方案。目标是获得下一个“未分配”的解决方案“productid,并在上一次添加记录后自动将其放入文本框中。这就是我们如何声明productid列:ID INT NOT NULL IDENTITY(1,1)主键,productid为'PROD'+RIGHT('0'+Cast(ID为VARCHAR(5)),6)persistend,
是否可以检查productid列是否包含所有数字数据,是否可以共享表的sql FIDLE或示例数据?
Dim ProdID As Integer
Using cn As New SqlConnection("Your connection String")
Using cmd As New SqlCommand("Insert whatever...; Select SCOPE_IDENTITY();", cn)
cn.Open()
ProdID = CInt(cmd.ExecuteScalar())
End Using
End Using