asp.net c# 一维数组每隔三个元素取值,循环怎么写

例子:string[]strList={2014-1-1,1男,1女,2014-1-2,2男,2女,2014-1-3,3男,3女}";//一维数组是有规律的排列,都是按“... 例子:
string[] strList={2014-1-1,1男,1女,2014-1-2,2男,2女,2014-1-3,3男,3女}" ;//一维数组是有规律的排列,都是按“日期,XX,YY,日期,XX,YY .....”这样的排列,元素的个数是3的倍数
现在是想把这数组每隔三个分别取值出来插入到数据库,比如先取“2014-1-1,1男,1女”把这三个值取出来之后赋给sql语句,再取“2014-1-2,2男,2女”的三个值赋给sql语句,直到取完为止。我知道是要写循环,脑子笨想不出来,很久没接触了。
sql语句参考 "insert into [table] ([Date],[Men],[Women]) values(@Date,@Men,@Women)";最后数据表里的值是这样的
2014-1-1 1男 1女
2014-1-2 2男 2女
2014-1-3 3男 3女
......
展开
 我来答
沐雅风电影
2014-01-05 · 超过64用户采纳过TA的回答
知道小有建树答主
回答量:191
采纳率:100%
帮助的人:125万
展开全部

希望对你有帮助!全程测试过,绝对ok,有什么问题@我

实现思路:

  • 分析整个数组,数组的长度是3个的倍数

  • 用strList.Length长度/3就能得到,[2014-1-1,1男,1女]

  • 关键是(i * 3),因为你除以3之后,第二次循环数组又开始从索引0查找索引把之前的索引赋上

  • 代码如下:

     

  • //事件
            protected void btnSql_Click(object sender, EventArgs e)
            {
                DateTime dtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //时间格式
                string sql = "";
                string[] strList = { "2014-1-1", "1男", "1女", "2015-1-2", "2男", "2女", "2016-1-3", "3男", "3女"};
                //循环数组
                for (int i = 0; i < strList.Length / 3; i++){
                    string _time = strList[i * 3];//日期
                    string _men = strList[i*3 + 1];//男   
                    string _women = strList[i*3  + 2];//女  
                    //赋值
                    sql = "insert into [table] ([Date],[Men],[Women]) values(" + _time + "," + _men + "," + _women + ")";
                    //执行插入
                    ExecuteSql(ConnectionString, CommandType.Text, sql, null);
                }
            }
  • 底层调用:
  • //获取config中的字符串
           public string ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
            /// <summary>
            ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
            /// </summary>
            /// <param name="connectionString">一个有效的连接字符串</param>
            /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
            /// <param name="cmdText">存储过程名称或者sql命令语句</param>
            /// <param name="commandParameters">执行命令所用参数的集合</param>
            /// <returns>执行命令所影响的行数</returns>
            public  int ExecuteSql(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    //PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    int val = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return val;
                }
            }
syht2000
高粉答主

推荐于2018-04-04 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

数据原本就不该保存在string数组中,即然你已经存了,那就

string[] strList = { "2014-1-1", "1男", "1女", "2014-1-2", "2男", "2女", "2014-1-3", "3男", "3女" };
for (int i = 0; i < strList.Length / 3; i++)
{
    string dt = strList[i * 3];//日期,具体最后是哪种类型日期按需要转换一下
    string men = strList[i * 3 + 1];//男
    string women = strList[i * 3 + 2];//女
    Console.WriteLine("{0},{1},{2}", dt, men, women);
}
Console.ReadKey();

得到数据后怎么插入数据库不用写了吧。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式