首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

asp.net网站 前台参数由先期的id 变为name 结果只能读到数据表中的第一条记录

2013-03-14 
asp.net网站前台参数由之前的id 变为name结果只能读到数据表中的第一条记录一个签证网站http://www.400vis

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……

热点排行