读书人

asp.net网站 前台参数由先期的id 变为

发布时间: 2013-03-14 10:33:15 作者: rapoo

asp.net网站 前台参数由之前的id 变为name 结果只能读到数据表中的第一条记录
一个签证网站http://www.400visa.com/American_qianzheng.html 前台页面之前是有对应的id作为参数传到后台,现在为了利于收录,把参数id改为name,后台利用三层架构,添加了方法

  public static Td_Region SelectTd_RegionByRegionEname(string regionEname)
{
Td_Region info = null;//返回值
string sql = string.Format("SELECT * FROM Td_Region WHERE regionEname =\'{0}\'", regionEname);
IList<Td_Region> list = SelectTd_RegionsBySql(sql);
if (list.Count > 0)
{
info = list[0];
}
return info;
}


但是读取数据显示无论点击那个国家领取,都显示的数据表中的第一个name匹配的列,
 public static Td_Region SelectTd_RegionByRegionEname(string regionEname)
{
Td_Region info = null;//返回值
string sql = string.Format("SELECT * FROM Td_Region WHERE regionEname =\'{0}\'", regionEname);
IList<Td_Region> list = SelectTd_RegionsBySql(sql);
if (list.Count > 0)
{
info = list[0];
}
return info;
}







public static Td_Region SelectOneTd_RegionBySql(string sql)
{
Td_Region info = null;//返回值
IList<Td_Region> list = SelectTd_RegionsBySql(sql);
if (list.Count > 0)
{
info = list[0];
}
return info;
}

public static IList<Td_Region> SelectAllTd_Regions()
{
string sql = "SELECT * FROM Td_Region";


return SelectTd_RegionsBySql(sql);
}

public static IList<Td_Region> SelectAllTd_RegionsBySql(string sql)
{
return SelectTd_RegionsBySql(sql);
}


public static IList<Td_Region> SelectTd_RegionsByCountryId(int countryId)
{
string sql = string.Format("SELECT * FROM Td_Region WHERE CountryId={0}", countryId);
return SelectTd_RegionsBySql(sql);
}


private static IList<Td_Region> SelectTd_RegionsBySql(string safeSql)
{
return SelectTd_RegionsBySql(safeSql, null);
}

private static IList<Td_Region> SelectTd_RegionsBySql(string sql, params SqlParameter[] values)
{
IList<Td_Region> list = new List<Td_Region>();//返回值

DataTable table = DBHelper.GetTable(sql, values);
foreach (DataRow row in table.Rows)
{
Td_Region td_Region = new Td_Region();
if (!Convert.IsDBNull(row["RegionId"]))
{
td_Region.RegionId = (int)row["RegionId"];
}
if (!Convert.IsDBNull(row["CountryId"]))
{
td_Region.CountryId = (int)row["CountryId"];
}
if (!Convert.IsDBNull(row["RegionName"]))
{
td_Region.RegionName = (string)row["RegionName"];
}


if (!Convert.IsDBNull(row["RegionImage"]))
{
td_Region.RegionImage = (string)row["RegionImage"];
}
if (!Convert.IsDBNull(row["RegionCountent"]))
{
td_Region.RegionCountent = (string)row["RegionCountent"];
}

if (!Convert.IsDBNull(row["RegionEname"]))
{
td_Region.RegionEname = (string)row["RegionEname"];
}

td_Region.FK_Country = Td_CountryService.SelectTd_CountryByCouId((int)row["CountryId"]); //FK

list.Add(td_Region);
}
return list;
}
}


[解决办法]
参数不为英文或数值型时,需要转义字符
C#
Server.UrlEncode()

js

escape()
[解决办法]
table里有几条记录,DbHelper.GetTable的细节能看一下吗
[解决办法]
你的SQL语句写的有问题。

string sql = string.Format("SELECT * FROM Td_Region WHERE regionEname =\'{0}\'", regionEname); IList<Td_Region> list = SelectTd_RegionsBySql(sql);

改成

string sql = string.Format("SELECT * FROM Td_Region WHERE regionEname = @regionEnamel", regionEname);
SqlParameter[] parms={new SqlParameter("regionEname",regionEname)};
IList<Td_Region> list = SelectTd_RegionsBySql(sql,params);

[解决办法]
你把SQL语句里的两个\ 去掉再看
[解决办法]
'在"号里不需要转义,只让你把转义符去掉,由没让你把单引号去掉啊
[解决办法]
你这个方法就是返回一条记录啊。

public static Td_Region SelectTd_RegionByRegionEname(string regionEname) { Td_Region info = null;//返回值 string sql = string.Format("SELECT * FROM Td_Region WHERE regionEname =\'{0}\'", regionEname); IList<Td_Region> list = SelectTd_RegionsBySql(sql); if (list.Count > 0) { info = list[0]; } return info; }






[解决办法]
那你的SQL应该这么写
Select * From table where RegionEname=@RegionEname and CountryId=@id
返回这条语句取出的记录集就可以了
[解决办法]
没有id你怎么按照id来筛选数据呢?
[解决办法]

if (list.Count > 0)
{
info = list[0];
}
return info;

这个list是所有符合regionEname的数据,然后你只返回了List中的第一条数据。
不是这样吗?
[解决办法]
真不懂,怎么会有这种纠结,既然你想取出CountryId=5的数据,那总得有个规律吧,是某一列排序取第一条,或者看同一RegionName下那个CountryId的数据最多。莫名其妙地就要取某一条数据,以后数据有变动了怎么办呢?
[解决办法]
谢谢分享 Td_Re……

读书人网 >C#

热点推荐