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