收录日期:2020/09/26 00:48:57 时间:2016/07/15 11:38:29 标签:VB.NET
yifan__ 于 2009-08-10 21:21:02 编辑  准备在数据库Access中保存一些文字和图片,现在在读取图片的时候,卡着过不去了,使用编程环境是visual basic 2005

 Private Sub ShowImage(ByVal s As String)
        Dim cnn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\test.mdb")
        Dim Olecmd As OleDbCommand = New OleDbCommand
        cnn.Open()

        Dim str As String = "SELECT test FROM test WHERE name='" & s & "'"
        Dim cmd As New OleDb.OleDbCommand(str, cnn)
        Dim MyDataReader As OleDbDataReader
        MyDataReader = Olecmd.ExecuteReader()      ‘此处出错ExecuteReader: Connection 属性尚未初始化。
        Try
            Do While MyDataReader.Read
                TextBox1.Text = (MyDataReader.Item(0))
                TextBox2.Text = (MyDataReader.Item(1))
                Dim b() As Byte
                'b = cmd.ExecuteScalar()
                b = (MyDataReader.Item(2))
                If (b.Length > 0) Then
                    Dim stream As New MemoryStream(b, True)
                    stream.Write(b, 0, b.Length)
                    DrawToScale1(New Bitmap(stream))
                    stream.Close()
                End If
                Dim b1() As Byte
                'b = cmd.ExecuteScalar() 
                b1 = (MyDataReader.Item(3))
                If (b.Length > 0) Then
                    Dim stream As New MemoryStream(b1, True)
                    stream.Write(b1, 0, b.Length)
                    DrawToScale2(New Bitmap(stream))
                    stream.Close()
                End If
            Loop
        Catch ex As Exception
            Label1.Text = " 所选记录包含空字符串"
            MyDataReader.Close()
            cnn.Close()
            cnn.Dispose()
        End Try
    End Sub
    Private Sub DrawToScale1(ByVal bmp As Image)
        PictureBox1.Image = New Bitmap(bmp)
    End Sub
    Private Sub DrawToScale2(ByVal bmp1 As Image)
        PictureBox2.Image = New Bitmap(bmp1)
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim i As String = InputBox("请输入名字:")
        ShowImage(i)
    End Sub
总是在此处出现错误:MyDataReader = Olecmd.ExecuteReader()  提示 ExecuteReader: Connection 属性尚未初始化。
请各位帮忙看一下
感谢
Dim Olecmd As OleDbCommand = New OleDbCommand(str, cnn) 
你定义了2个OleDbCommand。而使用的则没有设置Connection等属性
Dim cmd As New OleDb.OleDbCommand(str, cnn) 
Dim MyDataReader As OleDbDataReader 
MyDataReader = cmd.ExecuteReader()
Dim cnn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\test.mdb")
Dim Olecmd As OleDbCommand = New OleDbCommand
cnn.Open()

Dim str As String = "SELECT test FROM test WHERE name='" & s & "'"
Dim cmd As New OleDb.OleDbCommand(str, cnn)
cmd.Connection = cnn '加上这句
Dim MyDataReader As OleDbDataReader
MyDataReader = Olecmd.ExecuteReader() 
Try
Do While MyDataReader.Read
TextBox1.Text = (MyDataReader.Item(0))
TextBox2.Text = (MyDataReader.Item(1))
Dim b() As Byte
'b = cmd.ExecuteScalar() 
b = (MyDataReader.Item(2))
If (b.Length > 0) Then
Dim stream As New MemoryStream(b, True)
stream.Write(b, 0, b.Length)
DrawToScale1(New Bitmap(stream))
stream.Close()
End If
Dim b1() As Byte
'b = cmd.ExecuteScalar() 
b1 = (MyDataReader.Item(3))
If (b.Length > 0) Then
Dim stream As New MemoryStream(b1, True)
stream.Write(b1, 0, b.Length)
DrawToScale2(New Bitmap(stream))
stream.Close()
End If
Loop
Catch ex As Exception
Label1.Text = " 所选记录包含空字符串"
MyDataReader.Close()
cnn.Close()
cnn.Dispose()
End Try
Dim Conn As New OleDb.OleDbConnection("") 
Conn.Open()
Dim Com As New OleDb.OleDbCommand(SqlStr, Conn) 
Com.ExecuteNonQuery() 
Conn.Close() 
引用 2 楼 net_lover 的回复:
你定义了2个OleDbCommand。而使用的则没有设置Connection等属性

To net_lover:感谢你的建议哦~~
Dim cnn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Application.StartupPath & "\test.mdb")
        cnn.Open()
        Dim str As String = "SELECT test FROM test WHERE name='" & s & "'"
        Dim Olecmd As OleDbCommand = New OleDbCommand(str, cnn)
        Olecmd.Connection = cnn
        Dim MyDataReader As OleDbDataReader
        MyDataReader = Olecmd.ExecuteReader()

     此处 MyDataReader = Olecmd.ExecuteReader()出现新的错误
 至少一个参数没有被指定值。
请帮忙在看看
引用 3 楼 wuyq11 的回复:
Dim cmd As New OleDb.OleDbCommand(str, cnn)
Dim MyDataReader As OleDbDataReader
MyDataReader = cmd.ExecuteReader()

TO wuyq11:感谢你的建议哦~~ 
MyDataReader = cmd.ExecuteReader()
出现新的问题至少一个参数没有被指定值。 请帮忙再看看
TO Snowdust:感谢
cmd.Connection = cnn 加上这句或没加都会出错误提示至少一个参数没有被指定值
呃,我只是来学习的。
Command和Connection都要。
查询值那里是要填写控件的值 -> name='" & s & "'"
此外如果不是用try的话,注意释放连接。
 Dim MyDataReader As  new OleDbDataReader 
        MyDataReader = Olecmd.ExecuteReader()      
还是没有解决....
Visual Basic] 
Public Sub ReadMyData(myConnString As String)
    Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders"
    Dim myConnection As New OleDbConnection(myConnString)
    Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)
    myConnection.Open()
    Dim myReader As OleDbDataReader
    myReader = myCommand.ExecuteReader()
    ' Always call Read before accessing data.
    While myReader.Read()
        Console.WriteLine(myReader.GetInt32(0).ToString() + ", " _
           + myReader.GetString(1))
    End While
    ' always call Close when done reading.
    myReader.Close()
    ' Close the connection when done with it.
    myConnection.Close()
End Sub

[C#] 
public void ReadMyData(string myConnString) {
   string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
   OleDbConnection myConnection = new OleDbConnection(myConnString);
   OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);
   myConnection.Open();
   OleDbDataReader myReader;
   myReader = myCommand.ExecuteReader();
   // Always call Read before accessing data.
   while (myReader.Read()) {
      Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
   }
   // always call Close when done reading.
   myReader.Close();
   // Close the connection when done with it.
   myConnection.Close();
}
这样的例子你再不清楚就没的教了。
问题已解决,只是设置了一个自动编号
谢谢各位的帮忙~~

忍不住了 发发牢骚 关于使用线程始终检索数据库问题? dbgrideh 中的内容怎样在fastreport3.0中打印 mysql 的存储过程的问题 关于主从表维护的问题 有没有DirectX 3D游戏程序高手?我公司急聘 高分请哪位仁兄指教一下,小弟刚学编程。 文件里以‘\\t’分隔的记录怎样分析? 该条触发器语句怎么写 用户建立个性化模版,然后按此生成网页,如何实现??? 利用vc与opengl显示三维数据点? 如何检查内存泄露 小小的问题 菜鸟郁闷 ASP,如何只显示第一页(急!在线等) 如果在软件中加入有害代码,在软件侦测到被破解后,就运行有害代码,出了问题责任由开发人负还是由破解者负? excel表中的数据如何转到ACCESS中来?? 华为网络工程师认证怎么样啊 【vector类】,为什么析构函数没被调用? 求助自助建站系统完整原代码 打0769110移动公司收了我钱 如何把文本数据导入ORACLE数据库? 有熟习websharp哪个平台的吗?进来指导一下! Datagrid控件的超级连接列可以带一个参数到下一个页面,方法URL格式字符串写:abc2.aspx?a1={0},问题是如何带两个参数到下一个页面? 数据库连接问题. 档案问题咨询(高分) 一个移动通信技术网站 有人用过TREE VIEW控件吗,急了.... 结错帖了,请dxef进来接分 为什么不能执行保存? 求决策树C4.5的源码