Visual Basic连接MySQL报错:未知数据库'new_time_and_attendance'
问题分析与解决步骤
你的错误核心是**Unknown database 'new_time_and_attendance'**——连接字符串中指定的数据库不存在,或者名称拼写错误,身份验证提示是连带触发的次要信息。以下是具体解决流程:
1. 确认目标数据库是否存在
打开MySQL客户端(命令行、Workbench、Navicat均可),登录root用户后执行:
SHOW DATABASES;
如果列表中没有new_time_and_attendance,立即创建:
CREATE DATABASE new_time_and_attendance;
2. 修正连接字符串
你的代码中使用Form1.connection作为连接字符串,必须确保它包含正确的数据库信息,标准格式如下(替换你的密码):
Server=localhost;Database=new_time_and_attendance;Uid=root;Pwd=你的密码;SslMode=None;
若你的MySQL版本是8.0+,默认身份验证插件为caching_sha2_password,需额外添加参数兼容mysql_native_password:
Server=localhost;Database=new_time_and_attendance;Uid=root;Pwd=你的密码;SslMode=None;AllowPublicKeyRetrieval=True;
或者直接修改root用户的身份验证方式(永久生效):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
3. 代码优化建议
你的loadenrolleddata方法存在重复声明变量、资源未自动释放的问题,建议改用Using语句管理连接和命令,避免资源泄漏:
Sub loadenrolleddata() Dim drt As MySqlDataReader Dim nm As String fptemplist.Clear() listofnames.Clear() ' Using语句自动释放连接资源 Using mysqlconn As New MySqlConnection(Form1.connection) mysqlconn.Open() nm = "select personnelid,fingerdata1,fingerdata2,fingerdata3,fingerdata4,fingerdata5,fingerdata6,fingerdata7,fingerdata8," _ & "fingerdata9,fingerdata10 from new_enrollment" ' Using语句自动释放命令资源 Using cmd As New MySqlCommand(nm, mysqlconn) drt = cmd.ExecuteReader() While drt.Read() Dim mstram As IO.MemoryStream For i = 1 To 10 Dim fpbytes As Byte() = drt("fingerdata" & i) mstram = New IO.MemoryStream(fpbytes) If fpbytes.Length > 0 Then Dim temp8 As DPFP.Template = New DPFP.Template() temp8.DeSerialize(mstram) fptemplist.Add(temp8) listofnames.Add(drt("personnelid")) End If Next End While drt.Close() End Using End Using End Sub
内容的提问来源于stack exchange,提问作者Bruno Ganontha
相关产品推荐
相关产品推荐

