-1

我是 Visual Studio 和带有 vb 的 asp.net 的新手,并且一直在尝试破解以下代码以在 vb 中运行一个简单的 sql 查询,以便以 html 格式显示。

代码:

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes 
Imports System.Data.Odbc
Imports Microsoft.SqlServer.Server
Imports System.Data.OleDb
Imports System.Data.OleDb.OleDbCommand
Imports Oracle.DataAccess.Client

Public Class WebForm1
Inherits System.Web.UI.Page

Private oradb = "Data Source=(DESCRIPTION=" _
   + "(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=####))" _
   + "(CONNECT_DATA=(SERVICE_NAME=#)));" _
   + "User Id=user;Password=pwrd;"

Dim conn As New OracleConnection(oradb.ToString)
Dim sql As String = "SELECT * FROM Db WHERE CLMN = 'Y'"
Dim cmd As New OracleCommand(sql, conn)
Dim dr As OracleDataReader

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles      Me.Load
    MySub()

End Sub

Sub MySub()

    conn.Open()
    cmd.CommandType() = sql
    dr = cmd.ExecuteReader()
    dr.Read()

    GridView1.DataSource = dr.Read()

    conn.Close()
    conn.Dispose()


End Sub
End Class

代码崩溃了,cmd.CommandType() = sql

放在ie.ToString之后cmd.CommandType() = sql.ToString,这会导致代码在GridView1.DataSource = dr.Read()无效的 DataSource 错误处中断。

我一直在研究修复,似乎认为我需要在cmd.CommandType.Text某个地方声明,但如果不完全破坏代码就无法做到这一点。

感谢任何建议,如果是明显的建议,请道歉。谷歌在这方面不是我的朋友。

谢谢

4

1 回答 1

3

您将 commandType 设置为等于您的查询,这是不正确的。在你的情况下它应该是 Text 或者只是省略它,无论如何它都会默认为 text 。

CommandType 只能是 StoredProcedure、TableDirect 或 Text(来自http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtype.aspx

您应该改用 CommandText 属性(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtext.aspx

于 2013-08-01T09:52:19.923 回答