我是Visual Studio和asp.net with vb的新手,并且一直在尝试破解以下代码,在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
在.ToString
之后放置cmd.CommandType() = sql.ToString
,这会导致代码在GridView1.DataSource = dr.Read()
处中断并出现无效的DataSource错误。
我一直在研究修复,似乎认为我需要在某处声明cmd.CommandType.Text
,但如果不完全破坏代码就不能这样做。
感谢任何建议,如果是明显的建议,请道歉。谷歌并不是我的朋友。
由于
答案 0 :(得分:3)
您将commandType设置为等于您的查询不正确。在你的情况下它应该是文本或者只是省略它,它仍然默认为文本。
CommandType只能是StoredProcedure,TableDirect或Text(来自http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtype.aspx
您应该使用CommandText propery(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtext.aspx)