问题描述
.cs:publicpartialclassBookPage:System.Web.UI.Page{MongoServer_service1;MongoDatabase_database1;MongoClient_client1;publicList<BOOK>bookList;protectedvoidPage_Load(objectsender,EventArgse){stringconn="mongodb://127.0.0.1:27017";_client1=newMongoClient(conn);_service1=_client1.GetServer();_database1=_service1.GetDatabase("myaspweb");MongoCollection<BOOK>_books=_database1.GetCollection<BOOK>("book");varquery=Query<BOOK>.GTE(x=>x.id,0);varresult=_books.FindAs<BOOK>(query);bookList=result.ToList<BOOK>();Response.Write("<script>alert('"+bookList[1].name+"')</script>");}}publicclassBOOK{//[BsonId]publicintid{get;set;}publicstringname{get;set;}publicstringmessage{get;set;}publicstringstartTime{get;set;}publicstringendTime{get;set;}publicintifOut{get;set;}publicstringprice{get;set;}publicstringpicture{get;set;}}数据库里面有值,另一个表的插入操作可以
解决方案
解决方案二:
bookList[1]为啥是从索引一开始?不异常?
解决方案三:
解决方案四:
断点调试啊出了问题不要靠猜断点跟,看每个变量的值到底是多少,数组里到底有多少个元素,都是什么
解决方案五:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-
解决方案六:
引用4楼qq_27801561的回复:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-
报什么错误没?如果没报错,又不会断点,就Response.Write把每个变量及方法返回的结果输出看看是否有问题。提醒一点,程序员必须学会用断点,因为这个非常重要也非常有用!
解决方案七:
引用5楼yue547283947的回复:
Quote: 引用4楼qq_27801561的回复:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-报什么错误没?如果没报错,又不会断点,就Response.Write把每个变量及方法返回的结果输出看看是否有问题。提醒一点,程序员必须学会用断点,因为这个非常重要也非常有用!
报错就是:索引超出范围。必须为非负值并小于集合大小。应该就是没有取到值,数据库连接是对的,另一个表的插入操作可以,代码是老师给的,就是取不出来值........
解决方案八:
引用6楼qq_27801561的回复:
Quote: 引用5楼yue547283947的回复:
Quote: 引用4楼qq_27801561的回复:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-报什么错误没?如果没报错,又不会断点,就Response.Write把每个变量及方法返回的结果输出看看是否有问题。提醒一点,程序员必须学会用断点,因为这个非常重要也非常有用!
报错就是:索引超出范围。必须为非负值并小于集合大小。应该就是没有取到值,数据库连接是对的,另一个表的插入操作可以,代码是老师给的,就是取不出来值........
光看你这个代码是看不出问题的。又控制不了你的电脑。你可以问你的老师,及同学。
解决方案九:
引用6楼qq_27801561的回复:
Quote: 引用5楼yue547283947的回复:
Quote: 引用4楼qq_27801561的回复:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-报什么错误没?如果没报错,又不会断点,就Response.Write把每个变量及方法返回的结果输出看看是否有问题。提醒一点,程序员必须学会用断点,因为这个非常重要也非常有用!
报错就是:索引超出范围。必须为非负值并小于集合大小。应该就是没有取到值,数据库连接是对的,另一个表的插入操作可以,代码是老师给的,就是取不出来值........
代码是老师给的,数据库是谁建的?看看数据库里到底有没有这张表
解决方案十:
断点调试,到bookList=result.ToList<BOOK>();这里时看下LIST里面的数据
解决方案十一:
折磨3天都正常。。。。。。。。。。。。。。。。。
解决方案十二:
第三方接口,折磨3个星期都不多
解决方案十三:
装个反编译,配置到vs里直接跟进去
解决方案十四:
引用6楼qq_27801561的回复:
Quote: 引用5楼yue547283947的回复:
Quote: 引用4楼qq_27801561的回复:
取出的数据应该有十几条,1就是随便取一个看看,不太会调试-,-报什么错误没?如果没报错,又不会断点,就Response.Write把每个变量及方法返回的结果输出看看是否有问题。提醒一点,程序员必须学会用断点,因为这个非常重要也非常有用!
报错就是:索引超出范围。必须为非负值并小于集合大小。应该就是没有取到值,数据库连接是对的,另一个表的插入操作可以,代码是老师给的,就是取不出来值........
索引超出范围,一般是访问数组、列表时,索引值不在0-【数组/列表个数-1】之间嘛,调试呗。
解决方案十五:
短点,慢慢看,就好了
其他方案:
varquery=Query<BOOK>.GTE(x=>x.id,0);1.确认数据表中有id==0的数据。2.如果id是主键,就只会返回一条数据,bookList[1]显然会索引超出范围。3.养成设置trycatch的习惯。这样易于查找错误到底发生在哪条代码上。
解决方案:对不起,没注意GTE,上面回复的第二条不对。不过还是建议查看下数据库的值。是否有id字段,记录的id字段是否有值,是否是整数。mongodb的记录是没有约束的,可以随意插入。