public void GetRestaurantListPhoto() { string sql = "";
try { sql = "SELECT TOP 1 [RID] FROM [Resturant] ORDER BY [RNumber] desc"; myconnection.Open(); SqlCommand cmd = new SqlCommand(sql, myconnection); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { PhotoRID= reader["RID"].ToString();
} } } catch (Exception err) { throw new Exception(err.Message); } finally { myconnection.Close(); } for ( int i=0; i<10||PhotoRID==null; i++) { //GetRestaurantListRID(PhotoRID); GetRestaurantListPic(PhotoRID,i); PicRID[i] = PhotoRID;
public void GetRestaurantListPhoto() { string sql = "";
try { sql = "SELECT TOP 1 [RID] FROM [Resturant] ORDER BY [RNumber] desc"; myconnection.Open(); SqlCommand cmd = new SqlCommand(sql, myconnection); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { PhotoRID= reader["RID"].ToString();
} } } catch (Exception err) { throw new Exception(err.Message); } finally { myconnection.Close(); } for ( int i=0; i<10||PhotoRID==null; i++) {
try { sql = "SELECT TOP 1 [RID] FROM [Resturant] where RID< @PhotoRID ORDER BY RID DESC"; myconnection.Open(); SqlCommand cmd = new SqlCommand(sql, myconnection); cmd.Parameters.AddWithValue("@PhotoRID", PhoRID);
using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { PhotoRID = reader["RID"].ToString();
} } } catch (Exception err) { throw new Exception(err.Message); } finally { myconnection.Close(); } } //LIST页显示时,获得最新入库的图片 public void GetRestaurantListPic(string PhotoRID,int i) { string sql = ""; try { ORID = OtherRID[i].ToString(); sql = "SELECT TOP 1 [RPhoto] FROM [RestaurantPhoto] where RID=@PhotoRID"; myconnection.Open(); SqlCommand cmd = new SqlCommand(sql, myconnection); cmd.Parameters.AddWithValue("@PhotoRID", PhotoRID); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { RestaurantPhotoList[i] = reader["RPhoto"].ToString(); } } } catch (Exception err) { throw new Exception(err.Message); } finally { myconnection.Close(); } }
我已经换了个变量!
我觉得可能是我的sql语句有问题,但是我就是 不知道错在哪里了!
ok在using 断点试试
PhotoRID = reader["RID"].ToString();
唯一有可能抛这个异常的就在这里了
reader["RID"]
不过上面既然是
SELECT TOP 1 [RID]
这个列应该是有的,否则SQL异常
楼主再查
{
string sql = "";
try
{ sql = "SELECT TOP 1 [RID] FROM [Resturant] ORDER BY [RNumber] desc";
myconnection.Open();
SqlCommand cmd = new SqlCommand(sql, myconnection);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
PhotoRID= reader["RID"].ToString();
}
}
}
catch (Exception err)
{
throw new Exception(err.Message);
}
finally
{
myconnection.Close();
} for ( int i=0; i<10||PhotoRID==null; i++)
{
//GetRestaurantListRID(PhotoRID);
GetRestaurantListPic(PhotoRID,i); PicRID[i] = PhotoRID;
GetRIDdesc(PhotoRID); }
}
// PicRID.Length > 5 ????PicRID[i] = PhotoRID; // 应该是这里出错啦 ....
改成cmd.Parameters.Add("@PhotoRID",photoRID)如果还不行就
raeder["RID"] 改成 reader[0]
这一句是正确的!我执行的时候能够正确的取到前5个值!但是当取第6个的时候就出现越界的异常!
{
string sql = "";
try
{ sql = "SELECT TOP 1 [RID] FROM [Resturant] ORDER BY [RNumber] desc";
myconnection.Open();
SqlCommand cmd = new SqlCommand(sql, myconnection);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
PhotoRID= reader["RID"].ToString();
}
}
}
catch (Exception err)
{
throw new Exception(err.Message);
}
finally
{
myconnection.Close();
} for ( int i=0; i<10||PhotoRID==null; i++)
{
GetRestaurantListPic(PhotoRID,i); PicRID[i] = PhotoRID;
GetRIDdesc(PhotoRID); }
}
//得到LIST页店家图片的最新的店家ID
public void GetRIDdesc(string PhoRID)
{
string sql = "";
try
{
sql = "SELECT TOP 1 [RID] FROM [Resturant] where RID< @PhotoRID ORDER BY RID DESC";
myconnection.Open();
SqlCommand cmd = new SqlCommand(sql, myconnection);
cmd.Parameters.AddWithValue("@PhotoRID", PhoRID);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
PhotoRID = reader["RID"].ToString();
}
} }
catch (Exception err)
{
throw new Exception(err.Message);
}
finally
{
myconnection.Close();
} }
//LIST页显示时,获得最新入库的图片
public void GetRestaurantListPic(string PhotoRID,int i)
{
string sql = "";
try
{ ORID = OtherRID[i].ToString();
sql = "SELECT TOP 1 [RPhoto] FROM [RestaurantPhoto] where RID=@PhotoRID";
myconnection.Open();
SqlCommand cmd = new SqlCommand(sql, myconnection);
cmd.Parameters.AddWithValue("@PhotoRID", PhotoRID); using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
RestaurantPhotoList[i] = reader["RPhoto"].ToString(); }
} }
catch (Exception err)
{
throw new Exception(err.Message);
}
finally
{
myconnection.Close();
}
}
我有两个表,一个是存放基本信息的Restaurant表,还有一个存放图片的RestaurantPhoto表。因为一个Restaurant的ID对应多张图片,我又要读出按照ID号逆序,也就是最新入库的ID对应的一张图片!
GetRestaurantListPhoto这个函数中我先读出最新入库的ID号,然后调用GetRestaurantListPic函数来读出这个ID所对应的一个图片信息,然后把这个图片的信息存到数组PicRID中,(这是个长度为10的数组,公有变量)。再通过GetRIDdesc函数得到比这个ID小的所有ID中最新入库的ID号,循环读出十个!
{
PhotoRID= reader["RID"].ToString();
}其中 PhotoRID 是什么类型,不是集合的话,为什么用循环?
My-Blog地址2: http://blog.csdn.net/nyzfl
{
for(int i=0;i<reader.FieldCount;i++)
{
PhotoRID =+PhotoRID;
}}
myReader.Close();
{
GetRestaurantListPic(PhotoRID,i); PicRID[i] = PhotoRID;//问题可能在这里,i=0-9;你确保PicRID.Length至少是10
//或者 i<10||PhotoRID==null 第2个条件一直为true导致i == 10
GetRIDdesc(PhotoRID); }
这个也要确保Lenth >= 10;
{
throw new Exception(err.Message);
}
看了这段代码,就知道楼主是个新手,捕获一个异常又抛出,lz想想这段代码除了浪费性能还有什么其他作用吗?