2 sinat 34773351 sinat_34773351 于 2016.05.11 00:16 提问

startIndex 不能大于字符串长度。

我要实现的是从知识点的库里面找到某一门课程的知识点编号的最大值,知识点编号
是10位,前四位是课程编号,中间两位是章节编号,最后四位就是顺序号,然后取后
四位加上1,再把课程号,章节号,新的顺序号组合一下成为新的知识点编号,存进去。
获取最大后四位加1的代码是这样的:

 String sqlstr2 = "select MAX(Kno) Kno1 from KnowledgePoints where Kno LIKE '" + courseno + "%'";
        SqlCommand Comm2=new SqlCommand(sqlstr2,Conn);
        SqlDataReader dr2=Comm2.ExecuteReader();
        if (dr2.Read())
        {
            knowledgeno = dr2["Kno1"].ToString().Substring(6, 4);
            konwledgeintno = Convert.ToInt32(knowledgeno);
        }
        konwledgeintno++;
        knowledgeno = konwledgeintno.ToString("0000");

当数据库里面没有关于某一门课程的知识点时,添加这门课程的知识点时正常这个if语句就不会被执行,但是现在点击添加时就会出现“startIndex 不能大于字符串长度”这个提示。
这是怎么回事呢?求帮忙,谢谢!

3个回答

caozhy
caozhy   Ds   Rxr 2016.05.11 00:18

knowledgeno = dr2["Kno1"].ToString().Substring(6, 4);

dr2["Kno1"].ToString() 输出下这个字符串是什么,它有没有10个以上的字符。

caozhy
caozhy 回复pri310: 对,但是是zero based
一年多之前 回复
sinat_34773351
sinat_34773351 回复caozhy: 我要取最后四个字符 0 1 2 3 4 5 6 7 8 9 不是第一个数字是子串在原串的开始位置 不是6吗?
一年多之前 回复
caozhy
caozhy 回复pri310: 那就是了,SubString的下标是从0开始的。.Substring(5, 4);
一年多之前 回复
sinat_34773351
sinat_34773351 知识点的编号是10个字符 固定的
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.05.11 00:22

startIndex 不能大于字符串长度。 参数名: startIndex
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

havedream_one
havedream_one   2016.05.11 08:03

其实是Substring这个方法没搞懂,看看这个方法的介绍

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!