fsk33 2024-11-12 21:33 采纳率: 70.4%
浏览 10
问题最晚将于11月20日00:00点结题

向数据表用newid方式插入GUID问题

我在用VB6.0向sqlserver数据库Pub_Exam的Pub_Exam表写入数据,其中一字段Exam_GUID不能为空,且是自动生成的GUID(类似16进制的代码,中间有分隔,无大括号),我在使用newid()的方式写入数据,但是使用数据库连接的.execute不能使用(Selectsqlbd2.Execute这一段),编译时提示必选参数,麻烦帮看看。
以下是vb6.0代码:

Private Function Selectsqlbd2(SQL As String) As ADODB.Recordset
   Dim ConnStr As String
    Set rrsbd2 = New ADODB.Recordset
    Set connbd2 = New ADODB.Connection
    On Error GoTo MyErr:
ConnStr = "Provider=SQLOLEDB.1;Persist Security Info=false;User ID=" + Trim(Text36.Text) + ";PWD=" + Trim(Text71.Text) + ";Initial Catalog=" + Trim(Text194.Text) + ";Data Source=" + Trim(Text58.Text) + ""
connbd2.open ConnStr
    rrsbd2.CursorLocation = adUseClient
    rrsbd2.open Trim$(SQL), connbd2, adOpenDynamic, adLockOptimistic
    Set Selectsqlbd2 = rrsbd2
    Exit Function
MyErr:
rrsbd2.Close
connbd2.Close
    Set rrsbd2 = Nothing
    Set connbd2 = Nothing
   
   MsgBox "无法连接机构服务器,请检数据库或服务器!", vbInformation, "系统提示"
 
End Function
Dim SQL As String
SQL = "SELECT * FROM Pub_Exam WHERE Exam_HisCode='" & Exam_HisCode & "'"
Set rrsbd2 = Selectsqlbd2.Execute(SQL)  
 
If rrsbd2.EOF Then
 
    rrsbd2.AddNew
    rrsbd2("Exam_HisCode") = Exam_HisCode
    rrsbd2("Pat_Name") = Pat_Name
    rrsbd2("Pat_Sex") = Pat_Sex
    ' 使用SQL Server的NEWID()函数生成新的GUID
    rrsbd2("Exam_GUID") = Selectsqlbd2.Execute("SELECT NEWID() AS NewGuid").Fields("NewGuid").Value
Else
    ' 如果找到记录,更新现有记录
    rrsbd2.Edit
    rrsbd2("Pat_Name") = Pat_Name
    rrsbd2("Pat_Sex") = Pat_Sex
    rrsbd2.Update
End If
  • 写回答

24条回答 默认 最新

  • 阿里嘎多学长 2024-11-12 21:33
    关注

    阿里嘎多学长整理、AIGC生成:

    向数据表用newid方式插入GUID问题

    问题描述:使用VB6.0向SQL Server数据库Pub_Exam的Pub_Exam表写入数据,其中一字段Exam_GUID不能为空,且是自动生成的GUID。

    解决方案:

    可以使用 ADODB 对象中的 CreateGUID 方法生成GUID,并将其插入到数据库中。示例如下:

    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
    conn.Open "DRIVER={SQL Server};SERVER=your_server;DATABASE=Pub_Exam;UID=your_uid;PWD=your_pwd"
    
    Dim cmd As New ADODB.Command
    cmd.ActiveConnection = conn
    cmd.CommandText = "INSERT INTO Pub_Exam (Exam_GUID) VALUES (@Exam_GUID)"
    cmd.Parameters.Append cmd.CreateParameter("Exam_GUID", adGUID)
    
    Dim guid As String
    guid = CStr(conn.CreateGUID)
    cmd.Parameters("Exam_GUID").Value = guid
    
    cmd.Execute
    
    conn.Close
    Set conn = Nothing
    

    其中,your_serveryour_uidyour_pwd 需要 replaced为实际的服务器名、用户名和密码。

    如果你想在 Insert Operation 中生成GUID,可以使用 SQL 语句中的 NEWID() 函数:

    INSERT INTO Pub_Exam (Exam_GUID) VALUES (NEWID())
    

    在 VB6 代码中可以使用以下方式执行 SQL 语句:

    cmd.CommandText = "INSERT INTO Pub_Exam (Exam_GUID) VALUES (NEWID())"
    cmd.Execute
    

    注意:在使用 NEWID() 函数时,需要确保数据库的日志记录(Transaction Log)已经开启。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月12日

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。