C# 在Gridview中显示图像-水滴类型-Oracle 11g Apex
System.Data.OleDb.OLEDBEException:在处理命令期间发生一个或多个错误。 ORA-00936:缺少表达式 这就是我得到的错误。有什么建议吗 我的ashx处理程序代码是:C# 在Gridview中显示图像-水滴类型-Oracle 11g Apex,c#,asp.net,visual-studio-2010,oracle,C#,Asp.net,Visual Studio 2010,Oracle,System.Data.OleDb.OLEDBEException:在处理命令期间发生一个或多个错误。 ORA-00936:缺少表达式 这就是我得到的错误。有什么建议吗 我的ashx处理程序代码是: public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context) { OracleConnection conn = new OracleConne
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = "Select IMG_NAME, IMG_IMAGE from MYIMGTABLE where IMG_ID =:IMG_ID";
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = conn;
OracleParameter ImageID = new OracleParameter(":IMG_ID",OracleDbType.Int32);
ImageID.Value = context.Request.QueryString["IMG_ID"];
cmd.Parameters.Add(ImageID);
conn.Open();
OracleDataReader dReader = cmd.ExecuteReader();
dReader.Read();
context.Response.BinaryWrite((byte[])dReader["IMG_IMAGE"]);
dReader.Close();
conn.Close();
}
public bool IsReusable
{
get
{
return false;
}
}
}
我的aspx代码是:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="IMG_ID">
<Columns>
<asp:BoundField DataField="IMG_ID" HeaderText="IMG_ID" InsertVisible="False" ReadOnly="True" SortExpression="IMG_ID" />
<asp:BoundField DataField="IMG_NAME" HeaderText="IMG_NAME" SortExpression="IMG_NAME" />
<asp:TemplateField HeaderText="IMG_IMAGE">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# "Handler1.ashx?IMG_ID=" + Eval("IMG_ID")%>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>"
SelectCommand="SELECT [IMG_ID],[IMG_NAME],[IMG_IMAGE] FROM [MYIMGTABLE]">
</asp:SqlDataSource>
这是完成我的项目的最后一道难题。。。救命啊 ORA-00936、ORA-936是一个通用错误,指示您刚刚执行的SQL语句中缺少表达式。此错误很可能表示您遗漏了[逗号]或from子句或where子句或刚刚解析的SQL的其他部分。我发现您遗漏了OracleCommand上BindByName属性的设置,默认为false,然后它将按参数位置绑定,我不确定这是否是你的问题的根源,但试着设置它,看看它会起什么作用
我认为您需要将参数:IMG\u ID重命名为不包含冒号的内容,例如p\u IMG\u ID。冒号可以;它将以下名称指定为参数。也许在数据类型上存在混淆?尝试
ImageID.Value=Convert.ToInt32(context.Request.QueryString[“IMG\u ID]”)
,看看这是否有帮助。还要注意,一旦查询正常运行,您可能会在读取BLOB值时遇到问题。如果需要,请以Googleado.net oracle blob
为例。是否需要在=和参数值之间留一个空格?@EdGibbs No use:(它再次提示相同的错误。还有其他建议吗?@rontornambe我已经附加了堆栈跟踪。请查看它是否有任何用处。。