数据库中的日期格式是"2010/8/14",用SubString()方法取出月份"8",
书上用SubString(6,1), 
字符串"2010/8/14"索引6不是"/"吗?怎么会是"8"呢?请高手解惑!参考代码如下:其中Ydate代表月份,取值:1到12
string sql1 = "select * from tb_prize where UserID='" + id + "'";
            DataSet ds1 = operate.GetTable(sql1);//得到数据集
            ds1.Dispose();//释放资源
            string str = "select count(*) from tb_prize where UserID='" + id + "'";
            int i = operate.HumanNum(str);//获取记录数量
            if (i > 0)
            {
                if (ds1.Tables[0].Rows[0][8].ToString().Substring(6, 1) == Ydate)
                {
                    txtYjiangli.Text = ds.Tables[0].Rows[0][6].ToString();//得到奖励信息
                    txtYfakuan.Text = ds.Tables[0].Rows[0][7].ToString();//得到罚款信息
                }
                else
                {
                    txtYfakuan.Text = "0";//得到罚款信息
                    txtYjiangli.Text = "0";//得到奖励信息
                }
            }

解决方案 »

  1.   

    这又不是index,就是从第一个开始吧,1,2,3……,这样
      

  2.   

    直接SQL  DAY(日期) 或者 MONTH(日期)
      

  3.   

    你是对的。
    写个test程序运行一下就确定了。
      

  4.   

    SubString(6,1),???
         public class SubstringTest {
    public static void main(String[] args) {
    String str = "123456";
    System.out.println(str.substring(3, 4));
    System.out.println(str.substring(6, 1));
    }}
    4
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -5
    at java.lang.String.substring(Unknown Source)
    at SubstringTest.main(SubstringTest.java:11)测试一下就明白了,SubString(6,1)这种写法是不对的吧?而且索引为6的地方的确是/
      

  5.   

    substring(start,end)  start是从0开始计算的
      

  6.   

    是不是你的日期格式是类似于“2008/08/14”这种的,是完整格式,c#中日期格式字符串大体上可分为两种:“yyyy/MM/dd”和“yyyy/M/d”。对于第一种,当月份和日是单位数字的时候,数字前自动补零,后一种不补。
      

  7.   

    当然,string的定位是从0开始的,这点没有什么疑问。
      

  8.   

    LZ解决没的
    没解决 这个问题我包了
    Subtring么 呵呵 我还是有这个自信的
      

  9.   

    我在数据库中定义的日期类型为varchar(50),数据库中显示的是2010/8/14,我也不知道属于第一种还是第二种,怎么知道属于哪一种?
      

  10.   

    substring(起始位,取多位)如果书本的答案是“8”的话,那百分之百是错误的。我进行了测试substring(6,1)="/"
    C#中的数组是从0位开始,如果像是VB的话,那么就是“8”啦