开发者社区 问答 正文

vb sql查询出错 : 配置报错 

Private Sub Form_Load()

Dim ncd As String

ncd = Form1.cd

Dim str As String

str = "stlect *from 学生成绩管理 where 学号= ' & ncd & '"

Adodc1.RecordSource = str

Adodc1.Refresh

End Sub
一运行就提示无效的sql语句,期待....之类的。把adodc1.refresh删除之后就没有错误提示,但是sql查询就没有了作用。我没有配置odbc源,不是有个什么无源数据库查询么,也不知道是不是这样的。麻烦分析一下,谢谢
ps:cd是从form的datacombo选择框传递过来的文本。

展开
收起
kun坤 2020-06-04 13:15:59 584 分享 版权
阿里云 AI 助理回答

看起来您是在尝试编写一个Visual Basic (可能是VB6)的程序来从一个假设的数据库中查询学生信息,但代码中存在一些错误。首先,让我纠正这些错误,并提供一个更安全且符合一般做法的示例。请注意,实际应用中处理数据库查询时应使用参数化查询以防止SQL注入攻击。

Private Sub Form_Load()
    Dim ncd As String
    ' 假设cd是Form1上某个控件(比如文本框)的值,这里需要确保该控件存在并能正确赋值
    ncd = Form1.Text1.Text ' 假设学号输入在Text1控件中
    
    ' 使用ADO(ActiveX Data Objects)进行数据库操作更现代和安全
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strSQL As String
    
    ' 这里需要替换为你的实际数据库连接字符串
    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\yourdatabase.accdb;Persist Security Info=False;"
    
    ' 打开数据库连接
    conn.Open
    
    ' 参数化查询以防止SQL注入
    strSQL = "SELECT * FROM [学生成绩管理] WHERE [学号]= ?"
    rs.Open strSQL, conn, adOpenStatic, adLockOptimistic, adCmdText
    
    ' 设置参数值
    rs.Parameters(0).Value = ncd
    
    ' 处理查询结果...
    ' 例如,遍历记录集并显示数据
    Do While Not rs.EOF
        Debug.Print rs("学号"), rs("姓名") ' 根据实际字段名调整
        rs.MoveNext
    Loop
    
    ' 清理资源
    rs.Close
    conn.Close
End Sub

这段代码做了以下修改和改进: 1. 使用ADODB.ConnectionADODB.Recordset对象进行数据库操作,这是VB中处理数据库的常见方式。 2. 引入了参数化查询,通过?占位符并在执行前设置参数值,这大大提高了安全性。 3. 提供了一个示例数据库连接字符串模板,你需要根据实际情况(如数据库类型、位置等)修改它。 4. 添加了打开和关闭数据库连接的步骤,以及处理查询结果的简单示例。

请根据你的具体需求和环境调整上述代码。如果使用的是其他数据库系统(如SQL Server、MySQL等),连接字符串和某些细节会有所不同。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
SQL
问答地址: