双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

foreach问题求救(System.NullReferenceException: 未将对象引用设置到对象的实例)

nbshiny nbshiny 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
源代码如下:问题出在 foreach (DataRow row in dsRead.Tables[0].Rows)这句话上,出现的问题如下所示:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:

行 57: //DataRow row = null;
行 58:
行 59: foreach (DataRow row in dsRead.Tables[0].Rows)
行 60: {
行 61:

源文件: e:\softbak\experimentmanage修改后\experimentmanage\open_experiment\teacher\get_data_from_excel.aspx.cs 行: 59

堆栈跟踪:

[NullReferenceException: 未将对象引用设置到对象的实例。]
open_experiment_teacher_get_data_from_excel.SubmitBtn_Click(Object sender, ImageClickEventArgs e) in e:\softbak\experimentmanage修改后\experimentmanage\open_experiment\teacher\get_data_from_excel.aspx.cs:59
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +75
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919
----------下面是源代码----------
public partial class open_experiment_teacher_get_data_from_excel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Session["xueyuan_id"] = "03";
this.Session["lab_id"] = "0302";
}
}

private static int getMaxID(String xueyuan_id, String lab_id)
{
SqlDataReader sdr = BigdaddySP.SelectSomethingNoPageWithWhere_SqlDataReader("V_getMaxProjectID", "xueyuan_id='" + xueyuan_id + "' and lab_id='" + lab_id + "'");
if (sdr.Read())
{
return Convert.ToInt32(sdr["max_id"].ToString());
}
sdr.Close();
return 0;
}
private static String computeProjectID(int id)
{
String str = Convert.ToString(id);
if (str.Length == 1)
return "000" + str;
else if (str.Length == 2)
return "00" + str;
else if (str.Length == 3)
return "0" + str;
else if (str.Length == 4)
return str;
else return "0000";
}
protected void SubmitBtn_Click(object sender, ImageClickEventArgs e)
{
//tecselclassid,name,url,_time

ViewState["excel_name"] = excel_name.Text;
DataSet dsRead= CreateDataSource(ViewState["excel_name"].ToString());
//DataRow row = null;
------------------------------------
foreach (DataRow row in dsRead.Tables[0].Rows)//???????????
--------------------------------
{

int pro_id=getMaxID(this.Session["xueyuan_id"].ToString(),this.Session["lab_id"].ToString())+1;

int iRet = 0;
SqlParameter[] prams = {
DataBase.MakeInParam("@id", SqlDbType.Int, 4,row["id"].ToString()),
DataBase.MakeInParam("@name", SqlDbType.VarChar, 50,row["姓名"].ToString()),
DataBase.MakeInParam("@type", SqlDbType.VarChar, 50,row["type"].ToString()),
DataBase.MakeInParam("@request", SqlDbType.VarChar, 50,row["请求"].ToString()),
DataBase.MakeInParam("@xueyuan_id", SqlDbType.VarChar, 2,this.Session["xueyuan_id"].ToString()),
DataBase.MakeInParam("@lab_id", SqlDbType.VarChar, 4,this.Session["lab_id"].ToString()),
DataBase.MakeInParam("@project_id", SqlDbType.VarChar, 4,computeProjectID(pro_id))
};
iRet = DataBase.RunProcInsert("insert_project", prams);
if (iRet > 0)
{
message.Text = "<script>this.alert('信息提交成功.')</script>";
}
else
{
message.Text = "<script>this.alert('信息提交失败.')</script>";
}
}
DataSet ds = BigdaddySP.SelectSomethingNoPageWithWhere_DataSet("open_project", "1=1");
list.DataSource = ds.Tables[0].DefaultView;
list.DataBind();
//Databind();
}

public static DataSet CreateDataSource(string Src)
{
try
{
string strConn;

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Src + ";" +
"Extended Properties=\"Excel 8.0;IMEX=1;\"";//连接

OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);

string tableName = schemaTable.Rows[0][2].ToString().Trim();//得到excel表名

OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", strConn);//查找excel数据

DataSet myDataSet = new DataSet();//定义数据

myCommand.Fill(myDataSet);

conn.Close();

return myDataSet;
}
catch
{
return null;
}
}

}
...全文

相关推荐

未将对象引用设置到对象的实例 (System.NullReferenceException)

System.NullReferenceException:未将对象引用设置到对象的实例,这是一个新鸟,中鸟,老鸟都避不开的错误

weixin_38661800

Unity内存管理:Native与托管对象双向引用原理与实战

在Unity开发中,内存管理与对象生命周期是核心议题,尤其当涉及C#托管代码与C++原生代码交互时。其原理在于理解托管堆与非托管堆的差异:托管对象由.NET垃圾回收器管理,生命周期非确定;而Native对象由引擎C++层直接管理,销毁即时。这种生命周期的错配,若处理不当,极易引发内存泄漏或访问违规崩溃,严重影响程序稳定性。其技术价值在于构建健壮、高效的跨域对象交互系统,是开发高性能插件、优化底层机制的关键。应用场景广泛,包括自定义原生插件集成、资源异步加载、ECS架构交互以及需要精细控制内存的高频逻辑模块。

weixin_34267123

未将对象引用设置到对象的实例问题原因

“System.NullReferenceException: 未将对象引用设置到对象的实例”问题可能原因如下: 1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就应用变量。 5、未用new初始化对象。 6、Session对象为空。 7、对控件赋文本值时,值不存在。 8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。 9、使用FindControl时,控件不存在却没有做预处理。 10、重复定义造成未将对象引用设置到对象的实例错误. 偶在ASP.Net中遇到的情况如下: 未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

liuwei_1120527

System.NullReferenceException(解决方案).md

项目中碰到的,记录一下解决方案

聆枝学长

VS2005(c#)项目调试问题解决方案集锦(三)

VS2005(c#)项目调试问题解决方案集锦

Michael-JOE
评论 10
收藏 已收藏
分享
返回顶部
nbshiny
C# 111,129 成员 642,540 内容