mysql - 您如何将输出参数从 vb.net 传递和接收到 mysql
问题描述
Dim Def_Command_MySQL1 As MySql.Data.MySqlClient.MySqlCommand
Def_Command_MySQL1.Parameters.Clear()
Def_Command_MySQL1.CommandText = "SET @OutID = 10;"
or
Def_Command_MySQL1.CommandText = "UPDATE ID_Max1 SET IdMax = IdMax + 1 , @OutID = IdMax + 1 where TypeID>1"
Def_Command_MySQL1.Parameters.Add(New SqlParameter("@OutID", SqlDbType.Int)).Value = 41
Def_Command_MySQL1.Parameters("@OutID").Direction = ParameterDirection.Output
Def_Command_MySQL1.ExecuteNonQuery()
IDMax_Update = Def_Command_MySQL1.Parameters("@OutID").Value
Err.Description "您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 '41 = 10' 附近使用正确的语法" 字符串
或者
Error = 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 '1=IdMax + 1 where TypeID>1'附近使用正确的语法
解决方案
首先,您将 AllowUserVariables 设置为 True(连接字符串中的默认值为 False,请参阅https://dev.mysql.com/doc/connector-net/en/connector-net-6-10-connection-options.html
其次摆脱参数代码,因为您将mysql用户定义变量@OutID替换为实际值,这会导致您的错误消息。
和
SET @OutID = 10;"
您在 mysql 中将用户定义的变量 @OutID 设置为数字 10。
但一般来说,以下代码向插入查询添加两个参数
Def_Command_MySQL1.CommandText = "INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)"
Def_Command_MySQL1.Parameters.AddWithValue("@C1", 1)
Def_Command_MySQL1.Parameters.AddWithValue("@C2", 2)
Def_Command_MySQL1.ExecuteNonQuery()
推荐阅读
- javascript - Angular中的动态更改/还原页面标题
- javascript - 如何使用 jquery 和 firebase 监听删除子节点
- java - 使用 Java 弹簧的 Redis Pub/Sub
- hive - 配置在 CDH 中保留 HIVE 查询结果的持续时间?
- extjs - 有没有办法在 extjs 中直接使用 Enums 和 tagfield?
- asp.net-core - 相当于 Castle Windsor ResolveAll 的净核心
- sql - SQL 获取上一行的 EVALUATED 值
- java - 使用 R2DBC 进行数据库迁移
- python - Spacy 代码片段按预期运行“In [1]:”,但任何后续运行都会引发错误
- python - 使用python在一个句子中松散地搜索多个单词