C# 使用C和Oracle时,输入字符串的格式不正确

C# 使用C和Oracle时,输入字符串的格式不正确,c#,oracle,visual-studio-2012,C#,Oracle,Visual Studio 2012,我正在使用oracle和C下载我上传的文件。上传文件工作正常,但下载功能不正常。我认为其背后的原因是传递了错误的字符串格式,但我不知道如何更正。我绑定到usetryparse,但没有工作,因为我想我可能没有很好地使用它。请帮助我解决这个问题。多谢各位 错误行: int Resources_id = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value.ToString()); 堆栈跟踪: [FormatException: Input

我正在使用oracle和C下载我上传的文件。上传文件工作正常,但下载功能不正常。我认为其背后的原因是传递了错误的字符串格式,但我不知道如何更正。我绑定到usetryparse,但没有工作,因为我想我可能没有很好地使用它。请帮助我解决这个问题。多谢各位

错误行:

int Resources_id = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value.ToString());
堆栈跟踪:

[FormatException: Input string was not in a correct format.]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +10689507
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +145
   System.Convert.ToInt32(String value) +43
   Lecturer_upload_resources.lnkDownload_Click(Object sender, EventArgs e) in c:\Users\aa551\Dropbox\WebSite4\Lecturer\upload resources.aspx.cs:67
   System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +116
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +101
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9643314
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
我的代码:

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OracleClient;
    using System.Configuration;
    using System.IO;



public partial class Lecturer_upload_resources : System.Web.UI.Page
{
    string strCon = "Data Source=****;Persist Security Info=True;User ID=****;Password=****;Unicode=false";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridviewData();
        }
    }
    // Bind Gridview Data
    private void BindGridviewData()
    {
        using (OracleConnection con = new OracleConnection(strCon))
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.CommandText = "select * from resource1";
                cmd.Connection = con;
                con.Open();
                gvDetails.DataSource = cmd.ExecuteReader();
                gvDetails.DataBind();
                con.Close();
            }
        }
    }
    // Save files to Folder and files path in database
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        string filename = Path.GetFileName(fileUpload1.PostedFile.FileName);
        Stream str = fileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(str);
        Byte[] size = br.ReadBytes((int)str.Length);
        using (OracleConnection con = new OracleConnection(strCon))
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.CommandText = "insert into resource1(FileName,fileType,Filedata) values(:FileName,:FileType,:FileData)";
                cmd.Parameters.AddWithValue(":FileName", filename);
                cmd.Parameters.AddWithValue(":FileType", "application/word");
                cmd.Parameters.AddWithValue(":FileData", size);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                BindGridviewData();
            }
        }
    }
    // This button click event is used to download files from gridview
    protected void lnkDownload_Click(object sender, EventArgs e)
    {
        LinkButton lnkbtn = sender as LinkButton;
        GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
        int Resources_id = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value.ToString());
        string filename, filetype;
        using (OracleConnection con = new OracleConnection(strCon))
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.CommandText = "select FileName, fileType, filedata from Resource1 where Resources_Id=:Resources_Id";
                cmd.Parameters.AddWithValue(":Resources_id", Resources_id);
                cmd.Connection = con;
                con.Open();
                OracleDataReader dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    Response.ContentType = dr["fileType"].ToString();
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + dr["FileName"] + "\"");
                    Response.BinaryWrite((byte[])dr["fileType"]);
                    Response.End();
                }
            }
        }
    }
    protected void gvDetails_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}

gvDetails.DataKeys[gvrow.RowIndex].value.ToString.Trim的值是多少?调试代码。你现在的文化是什么?看起来您忘记分配Convert.ToInt32方法的返回值了。该行中没有=。可能该操作的结果为null或空,这将是一个错误。等号在哪里?int-Resources\u id ConvertThx用于回答这个问题,但我不太理解您关于文化和价值观的问题,但我没有像您在代码中看到的那样使用Trim。等号已经存在。int-Resources\u id=Convert.ToInt32。