【发布时间】:2019-03-25 17:52:24
【问题描述】:
我正在 MySQL & VB.NET 中开发一个序列,其中,当删除一条记录时,标识它的数字被删除并将 1 到 'n' 的序列,序列如下。
这是 MySQL 的说明。
SET @rownum=0;
UPDATE id_line t, (SELECT @rownum:=@rownum+1 rownum, id_line.* FROM id_line WHERE id_line.line_name=59999 and id_line.line_no<>0) r
SET t.line_no = r.rownum
WHERE (t.id_line_b = r.id_line_b)
在 VB.net 中我使用这个
cmdB = New MySqlCommand("SET @rownum=0 UPDATE id_line t, (SELECT @rownum=:@rownum+1 rownum, id_line.* FROM id_line WHERE id_line.line_name='" & TextBox1.Text & "' and id_line.line_no<>0) r ) SET t.line_no = r.rownum WHERE(t.id_line_b = r.id_line_b)", conn)
但 VB 发送此错误
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'UPDATE id_line t, (SELECT @rownum=:@rownum+1 rownum, id_line.* FROM id_lin' at line 1'附近使用正确的语法
你能帮我解决这个错误吗?
更新 1: 这是我的字符串连接。
Public conString As String = "Data Source=server_one;port=3306;Initial Catalog=test_db;User Id=root;password=root;Allow User Variables=True"
【问题讨论】:
-
首先,我在
SET @rownum=0;的末尾看到一个分号,但它没有出现在 VB.NET 代码的字符串中。 -
是的,代码的第一部分是针对数据库引擎的,在VB.NET中添加分号,但错误仍然存在。