gpt4 book ai didi

mysql - 将 INNER JOIN 与插入和更新一起使用时,VB.Net 中出现错误

转载 作者:行者123 更新时间:2023-11-29 06:31:27 25 4
gpt4 key购买 nike

我正在尝试使用 INNER JOIN 进行插入和更新,但每当我保存时,它都会给我一个有关 SET 的错误,我无法弄清楚它到底出了什么问题,这是我第一次使用 INNER JOIN 我真的需要帮助为此

mysqlConn.Open()
sqlCmd = New Odbc.OdbcCommand
sqlCmd.Connection = mysqlConn

sqlCmd.CommandText = "INSERT INTO customer (guestno, datein, dateout, fullname, address, contactnum, total, paid, balance) VALUES ('" & Replace(Trim(staff_ri_txtguestno.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_dtpin.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_dtpout.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txtfullname.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txtaddress.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txtnumber.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txttotal.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txtpaid.Text), "'", "''") & "', '" & Replace(Trim(staff_ri_txtbalance.Text), "'", "''") & "')
SET room.customer_id = customer.customer_id
UPDATE room SET roomstatus = '" & Replace(Trim("Occupied"), "'", "''") & "'
FROM room T1 INNER Join customer T2 ON T1.customer_id = T2.customer_id
WHERE room_id ='" & staff_lblid.Text & "'"
dr = sqlCmd.ExecuteReader

mysqlConn.Close()

我的数据库结构

表名称:房间

房间ID |房间号 |房间状态 |房型 |率 |客户 ID

表名称:客户

客户 ID |访客 |日期 |日期输出 |全名 |地址 |联系人数 |总计 |付费|余额

Here's the error Screenshot

最佳答案

分解你的代码和Sql语句,你要求MySql做的是:

  1. 插入新客户... - 这看起来不错
  2. 在 Room 表上设置客户 ID ... - 这是无效的 Sql
  3. 更新房间状态... - 看起来不错。

将其与生成 Sql 语句的方式结合起来,您遇到问题是可以理解的。

我所做的是使用参数重写您的 Sql,这将有助于防止现在和将来的许多问题,并分解对 CustomerRoom 的更改> 将表放入两个同时执行的单独 Sql 语句中。

Using conn As New MySqlConnection(ConnectionString)
Dim insertCustomerSql As String = String.Empty
insertCustomerSql += "INSERT INTO CUSTOMER (guestno, datein, dateout, name, address, contactnum, total, paid, balance) "
insertCustomerSql += "VALUES (@guestNo, @dateIn, @dateOut, @name, @address, @contactNum, @total, @paid, @balance);"

Dim updateRoomSql As String = String.Empty
updateRoomSql += "UPDATE ROOM SET roomstatus = @roomStatus, customerid = LAST_INSERT_ID() WHERE id = @roomId;"

Dim sql As String = insertCustomerSql + Environment.NewLine + updateRoomSql

conn.Open()

Using command As New MySqlCommand(sql, conn)
command.Parameters.Add("guestNo", MySqlDbType.String).Value = 101
command.Parameters.Add("dateIn", MySqlDbType.Date).Value = DateTime.Now.Date
command.Parameters.Add("dateOut", MySqlDbType.Date).Value = DateTime.Now.Date.AddDays(5)
command.Parameters.Add("name", MySqlDbType.String).Value = "JayV"
command.Parameters.Add("address", MySqlDbType.String).Value = "My Home, England"
command.Parameters.Add("contactNum", MySqlDbType.String).Value = "+44 1234 5678"
command.Parameters.Add("total", MySqlDbType.Decimal).Value = 500
command.Parameters.Add("paid", MySqlDbType.Decimal).Value = 350
command.Parameters.Add("balance", MySqlDbType.Decimal).Value = 150

command.Parameters.Add("roomStatus", MySqlDbType.String).Value = "Occupied"
command.Parameters.Add("roomId", MySqlDbType.Int16).Value = 1
command.ExecuteNonQuery()
End Using
End Using

我还借此机会利用了一些其他好的实践,例如 Using block 。

希望对你有帮助。

关于mysql - 将 INNER JOIN 与插入和更新一起使用时,VB.Net 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55986299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com