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选择框传递过来的文本。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看起来您是在尝试编写一个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.Connection
和ADODB.Recordset
对象进行数据库操作,这是VB中处理数据库的常见方式。 2. 引入了参数化查询,通过?
占位符并在执行前设置参数值,这大大提高了安全性。 3. 提供了一个示例数据库连接字符串模板,你需要根据实际情况(如数据库类型、位置等)修改它。 4. 添加了打开和关闭数据库连接的步骤,以及处理查询结果的简单示例。
请根据你的具体需求和环境调整上述代码。如果使用的是其他数据库系统(如SQL Server、MySQL等),连接字符串和某些细节会有所不同。