Я играю с RFID и изучаю технологию, которую купил RC522. Подключил его к raspberry pi и начал создавать приложение.
При попытке зарегистрировать тег в базе данных mariadb происходит сбой. Я не могу понять, что не так.
Таблица:
CREATE TABLE RFID.Users (
ID INT(10) NOT NULL AUTO_INCREMENT,
Fname VARCHAR(100) NOT NULL,
Lname VARCHAR(100) NOT NULL,
TAG VARCHAR(100) NOT NULL,
Image LONGBLOB NOT NULL,
PRIMARY KEY (ID)
)
ENGINE = INNODB,
AUTO_INCREMENT = 4,
AVG_ROW_LENGTH = 16384,
CHARACTER SET latin1,
COLLATE latin1_swedish_ci;
Хранимая процедура:
CREATE DEFINER = 'root'@'%'
PROCEDURE RFID.Write_Tag(IN `@Fname` VARCHAR(100), IN `@Lname` VARCHAR(100), IN `@Tag` VARCHAR(100), IN `@Image` LONGBLOB)
BEGIN
INSERT INTO
Users
(Fname, Lname, TAG, Image)
VALUES
(@Fname, @Lname, @Tag, @Image);
END
Vb. net код для вставки тегов:
Private Sub BtnWriteTag_Click(sender As Object, e As EventArgs) Handles btnWriteTag.Click
Try
If IsNothing(PictureBox1.Image) Then
MsgBox("Please load image first")
Else
lblinfo.Text = "Please place your tag near the reader"
sshcmd = sshClient.RunCommand("python /home/pi/fabio/workingwriter.py " & "'" & txtFname.Text & "'")
txtTag.Text = sshcmd.Result.Replace(vbCr, "").Replace(vbLf, "")
Dim filesize As UInt32
Dim mstream As New System.IO.MemoryStream()
PictureBox1.Image.Save(mstream, Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()
filesize = mstream.Length
mstream.Close()
MessageBox.Show(filesize)
MessageBox.Show(txtFname.Text)
con = GetConnect()
con.Open()
cmd = New MySqlCommand("Write_Tag", con) With {
.CommandType = CommandType.StoredProcedure
}
cmd.Parameters.AddWithValue("@Fname", txtFname.Text)
cmd.Parameters.AddWithValue("@Lname", txtLname.Text)
cmd.Parameters.AddWithValue("@TAG", txtTag.Text)
cmd.Parameters.AddWithValue("@image", arrImage)
Dim x As Integer = cmd.ExecuteNonQuery()
If x = 1 Then
MessageBox.Show(" User saved.")
End If
End If
Catch ex As Exception
MsgBox("Error found: " & vbCrLf & ex.Message, MsgBoxStyle.Critical, "RFID Tag Reader")
Finally
If cmd IsNot Nothing Then cmd.Dispose()
If con IsNot Nothing AndAlso con.State <> ConnectionState.Closed Then con.Close()
End Try
End Sub
Ошибка Я возвращаюсь к уловке попытки: «Столбец« Fname »не может быть нулевым»
Благодарим Вас за помощь,
Фабио