多页面同时调用一个读取方法讨论 但是现在有用户哪里读不到数据,报错了,就报我SqldataRead没有读取到数据,dr["User_ID"],第一个列读取就报错了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #region 根据登陆的user_Id 获取用户信息 public static Ksd_User_Info GetUserByUserId(string userid) { string Connstring2 = ConfigurationManager.ConnectionStrings["Conn_public"].ConnectionString; SqlConnection con = new SqlConnection(Connstring2); try { Ksd_User_Info userinfo = null; string sql = "select * from ksd_user_info where [user_id]='" + userid + "'"; con.Open(); SqlCommand command = new SqlCommand(sql, con); SqlDataReader dr = command.ExecuteReader(); if (dr!=null) { if (dr.Read()) { userinfo = new Ksd_User_Info(); if (dr["User_Id"] != null) userinfo.User_Id = Convert.ToString(dr["User_Id"]); if (dr["User_Pwd"] != null) userinfo.User_Pwd = Convert.ToString(dr["User_Pwd"]); if (dr["User_tencode"] != null) userinfo.User_tencode = Convert.ToString(dr["User_tencode"]); if (dr["user_epname"] != null) userinfo.Epname = Convert.ToString(dr["user_epname"]); if (dr["User_endtime"] != null) userinfo.User_endtime = Convert.ToString(dr["User_endtime"]); if (dr["user_epname"] != null) userinfo.Owner = Convert.ToString(dr["user_epname"]); if (dr["User_setnumber"] != null) userinfo.User_setnumber = Convert.ToString(dr["User_setnumber"]); if (dr["User_regtime"] != null) userinfo.User_regtime = Convert.ToString(dr["User_regtime"]); if (dr["User_type"] != null) userinfo.User_type = Convert.ToString(dr["User_type"]); if (dr["User_begtime"] != null) userinfo.User_begtime = Convert.ToString(dr["User_begtime"]); if (dr["User_nownumber"] != null) userinfo.User_nownumber = Convert.ToString(dr["User_nownumber"]); if (dr["User_bank"] != null) userinfo.User_bank = Convert.ToString(dr["User_bank"]); if (dr["User_billno"] != null) userinfo.User_billno = Convert.ToString(dr["User_billno"]); if (dr["User_fax"] != null) userinfo.User_fax = Convert.ToString(dr["User_fax"]); if (dr["User_phone"] != null) userinfo.User_phone = Convert.ToString(dr["User_phone"]); if (dr["User_pname"] != null) userinfo.User_pname = Convert.ToString(dr["User_pname"]); if (dr["User_sales"] != null) userinfo.User_sales = Convert.ToString(dr["User_sales"]); if (dr["User_zip"] != null) userinfo.User_zip = Convert.ToString(dr["User_zip"]); if (dr["User_active"] != null) userinfo.User_active = Convert.ToInt32(dr["User_active"]); if (dr["User_email"] != null) userinfo.User_email = Convert.ToString(dr["User_email"]); if (dr["User_address"] != null) userinfo.User_address = Convert.ToString(dr["User_address"]); } } dr.Close(); dr.Dispose(); con.Close(); con.Dispose(); return userinfo; } catch (Exception ex) { con.Close(); con.Dispose(); throw ex; } finally { con.Close(); con.Dispose(); } } #endregion这是我的方法代码,错误就出在userinfo.User_Id = Convert.ToString(dr["User_Id"]);这一行,错误信息就只有一个列名,其他都没有 是不是数据库设置了区分大小写哦?改成user_id试试 if (dr["user_id"] != null) userinfo.User_Id = Convert.ToString(dr["user_id"]) 我不太关心你这个问题到底是什么造成的,我关心的是你的程序开发方法的错误造成了你这种“懦弱”的开发结果:在你的程序中,不要胡乱写什么try...catch。去掉它,你的调试器可以捕获错误,你能够动手去调试,去看看变量、调用堆栈、InnerException信息等等。这个时候(自己有一点调试概念了)再求助别人才好! 我不太关心你这个问题到底是什么造成的,我关心的是你的程序开发方法的错误造成了你这种“懦弱”的开发结果:在你的程序中,不要胡乱写什么try...catch。去掉它,你的调试器可以捕获错误,你能够动手去调试,去看看变量、调用堆栈、InnerException信息等等。这个时候(自己有一点调试概念了)再求助别人才好!这些我都懂,最开始我也没加try cath这些,但是我在本地单用户根本就没一点问题,打了断点,都不会报错,就是把程序放到网上,操作的人多了就会出现这样的情况,而且加了try cath和没加报的错误信息是一样的 如果整什么try...catch这样的人有一个特点,就是只会问别人“可能原因是什么?”然后一通瞎试,而自己连个像样的带点“分析”的问题陈述都拿不出来。对待这样的情况,我们只用说一句:你先让调试器在应该调试的语句上中断。 这是我把网站放到IIS上面,使用人多了之后才会出现的错误 SqldataRead不会自动关键sql链接,一但超出数据库所设定的量就会报错using(SqlDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection)){ ....} 你看看我的帖子内容,我是说同时调用这个方法的时候经常读不到数据,不是从来都读不到应该与这个无关,感觉与static什么的有关,就是同时读取时静态得到的是非空数据信息,但其实另一人没读到,所以索引出界。只是猜想,最好debug一下,有结果告诉我们 你看看我的帖子内容,我是说同时调用这个方法的时候经常读不到数据,不是从来都读不到应该与这个无关,感觉与static什么的有关,就是同时读取时静态得到的是非空数据信息,但其实另一人没读到,所以索引出界。只是猜想,最好debug一下,有结果告诉我们除了方法是静态,字段没有静态的,难道跟方法是静态的有关?我试试 感觉返回为SqlDataReader多好,然后再处理。楼主解决了告诉我们一声,我们也好学到东西。 不要用SqldataRead用dataset吧。 错误已解决,是static的问题,不是静态变量,是静态方法,我公司前一个程序猿把所有的方法都写成了静态方法,开始我还没发现,现在说出来,希望对大家有帮助,静态方法是不会释放内存的,所以千万不要在数据层写成静态方法,这回把你或者把别人坑死 C# 在A介面显示B介面设置的内容 帮忙理解下这句话 问一个C#找书签的问题. 请问table控件问题 .net下有什么好用的ORM工具 新手,求大家帮忙.在使用DataGrid时遇到的问题 【理论基础挑战】我解释不了的一段代码。 c#中表示 参数不可修改的符号是什么,对应c++中的const 的? ListView为什么什么也不显示(附源码) 睡不着觉~问个小问题 C# 关于整数转换整型数组的问题? 怎么对ZIP压缩包进行增删读操作呢?
public static Ksd_User_Info GetUserByUserId(string userid)
{
string Connstring2 = ConfigurationManager.ConnectionStrings["Conn_public"].ConnectionString;
SqlConnection con = new SqlConnection(Connstring2);
try
{
Ksd_User_Info userinfo = null;
string sql = "select * from ksd_user_info where [user_id]='" + userid + "'";
con.Open();
SqlCommand command = new SqlCommand(sql, con);
SqlDataReader dr = command.ExecuteReader();
if (dr!=null)
{
if (dr.Read())
{
userinfo = new Ksd_User_Info();
if (dr["User_Id"] != null)
userinfo.User_Id = Convert.ToString(dr["User_Id"]);
if (dr["User_Pwd"] != null)
userinfo.User_Pwd = Convert.ToString(dr["User_Pwd"]);
if (dr["User_tencode"] != null)
userinfo.User_tencode = Convert.ToString(dr["User_tencode"]);
if (dr["user_epname"] != null)
userinfo.Epname = Convert.ToString(dr["user_epname"]);
if (dr["User_endtime"] != null)
userinfo.User_endtime = Convert.ToString(dr["User_endtime"]);
if (dr["user_epname"] != null)
userinfo.Owner = Convert.ToString(dr["user_epname"]);
if (dr["User_setnumber"] != null)
userinfo.User_setnumber = Convert.ToString(dr["User_setnumber"]);
if (dr["User_regtime"] != null)
userinfo.User_regtime = Convert.ToString(dr["User_regtime"]);
if (dr["User_type"] != null)
userinfo.User_type = Convert.ToString(dr["User_type"]);
if (dr["User_begtime"] != null)
userinfo.User_begtime = Convert.ToString(dr["User_begtime"]);
if (dr["User_nownumber"] != null)
userinfo.User_nownumber = Convert.ToString(dr["User_nownumber"]);
if (dr["User_bank"] != null)
userinfo.User_bank = Convert.ToString(dr["User_bank"]);
if (dr["User_billno"] != null)
userinfo.User_billno = Convert.ToString(dr["User_billno"]);
if (dr["User_fax"] != null)
userinfo.User_fax = Convert.ToString(dr["User_fax"]);
if (dr["User_phone"] != null)
userinfo.User_phone = Convert.ToString(dr["User_phone"]);
if (dr["User_pname"] != null)
userinfo.User_pname = Convert.ToString(dr["User_pname"]);
if (dr["User_sales"] != null)
userinfo.User_sales = Convert.ToString(dr["User_sales"]);
if (dr["User_zip"] != null)
userinfo.User_zip = Convert.ToString(dr["User_zip"]);
if (dr["User_active"] != null)
userinfo.User_active = Convert.ToInt32(dr["User_active"]);
if (dr["User_email"] != null)
userinfo.User_email = Convert.ToString(dr["User_email"]);
if (dr["User_address"] != null)
userinfo.User_address = Convert.ToString(dr["User_address"]);
}
}
dr.Close();
dr.Dispose();
con.Close();
con.Dispose();
return userinfo;
}
catch (Exception ex)
{
con.Close();
con.Dispose();
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
#endregion
这是我的方法代码,错误就出在userinfo.User_Id = Convert.ToString(dr["User_Id"]);这一行,错误信息就只有一个列名,其他都没有
改成user_id试试
if (dr["user_id"] != null)
userinfo.User_Id = Convert.ToString(dr["user_id"])
我不太关心你这个问题到底是什么造成的,我关心的是你的程序开发方法的错误造成了你这种“懦弱”的开发结果:在你的程序中,不要胡乱写什么try...catch。去掉它,你的调试器可以捕获错误,你能够动手去调试,去看看变量、调用堆栈、InnerException信息等等。这个时候(自己有一点调试概念了)再求助别人才好!
我不太关心你这个问题到底是什么造成的,我关心的是你的程序开发方法的错误造成了你这种“懦弱”的开发结果:在你的程序中,不要胡乱写什么try...catch。去掉它,你的调试器可以捕获错误,你能够动手去调试,去看看变量、调用堆栈、InnerException信息等等。这个时候(自己有一点调试概念了)再求助别人才好!这些我都懂,最开始我也没加try cath这些,但是我在本地单用户根本就没一点问题,打了断点,都不会报错,就是把程序放到网上,操作的人多了就会出现这样的情况,而且加了try cath和没加报的错误信息是一样的
....
}
你看看我的帖子内容,我是说同时调用这个方法的时候经常读不到数据,不是从来都读不到应该与这个无关,感觉与static什么的有关,就是同时读取时静态得到的是非空数据信息,但其实另一人没读到,所以索引出界。只是猜想,最好debug一下,有结果告诉我们
你看看我的帖子内容,我是说同时调用这个方法的时候经常读不到数据,不是从来都读不到应该与这个无关,感觉与static什么的有关,就是同时读取时静态得到的是非空数据信息,但其实另一人没读到,所以索引出界。只是猜想,最好debug一下,有结果告诉我们除了方法是静态,字段没有静态的,难道跟方法是静态的有关?我试试
不要用SqldataRead
用dataset吧。