【问题标题】:Conversion from string "SELECT * FROM DB" to type 'Integer' is not valid从字符串“SELECT * FROM DB”到类型“Integer”的转换无效
【发布时间】:2013-08-01 09:38:54
【问题描述】:

我是 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 发生故障

.ToString 放在它之后,即cmd.CommandType() = sql.ToString,这会导致代码在GridView1.DataSource = dr.Read() 处中断并出现无效数据源错误。

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

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

谢谢

【问题讨论】:

  • 您将 SQL 放入“CommandType”。这应该是“命令”吗?
  • 不,将CommandType 更改为Command 无效,将其更改为CommandText 然后在GridView1.DataSource = dr.Read() 行出现此错误。
  • 从内存中读取,但应该先检查。无论如何,我建议在您继续之前找到一个好的演练,因为您的代码中有一些奇怪之处(尝试分配给函数结果,将 .ToString() 放在字符串上,dr.Read()自己坐等)

标签: asp.net sql vb.net oracle visual-studio-2012


【解决方案1】:

您将 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)

【讨论】:

  • 仍在努力寻找解决方案。我认为 CommandText 属性是已经从 Google 签出您的链接的方法。我想我需要继续寻找一个好的演练来开始我的工作。谢谢。
猜你喜欢
  • 2018-02-14
  • 1970-01-01
  • 2015-05-13
  • 2016-12-14
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多