我用Access做的数据库  里面有一张表   表里有三列值(字段名是1,2,3)我将一个有500个数据的数组的值插到数据表里(一列一列的插的)插第一列的时候是从第一行开始的   可插第二列的时候却不从第一行开始  而是从501行开始,这是为什么?????????????    ————————各位大侠帮帮忙,情况紧急哈--------------如图:
   1    2     3
   
   0
   1
   2
   .
   .
   .
 500    
        0
        1
        2
        .
        .
        .
       500
               0
               1
               2
               .
               .
               .
              500
        

解决方案 »

  1.   

    insert 语句是按行插入的,你的把3列数据拼成一行
      

  2.   

      OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");            OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = con;
                cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
                con.Open();
             
              
                   for (int i =0; i <= 599; i++)
                   {
                       cmd.CommandText = cmd.CommandText = "insert into mm (1) values (@a) ";                   cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];                    cmd.Connection = con;
                       int cd = cmd.ExecuteNonQuery();
                    }
      

  3.   


    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");  OleDbCommand cmd = new OleDbCommand();
      cmd.Connection = con;
      cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
      cmd.Parameters.Add(new OleDbParameter("@b", OleDbType.Decimal, 100));
      cmd.Parameters.Add(new OleDbParameter("@c", OleDbType.Decimal, 100));
      con.Open();
        
        
      for (int i =0; i <= 599; i++)
      {
      cmd.CommandText = cmd.CommandText = "insert into mm (1,2,3) values (@a,@b,@c) ";  cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
      cmd.Parameters["@b"].Value = CH372_Saved_Wave[i];
      cmd.Parameters["@c"].Value = CH372_Saved_Wave[i];  cmd.Connection = con;
      int cd = cmd.ExecuteNonQuery();
      }
      

  4.   

    你的insert語句怎麼只看到對一個字段(1)插入數據,2和3呢?
      

  5.   

    既然三個字段的值是一樣的,那不妨:
    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");  OleDbCommand cmd = null;
      con.Open();
        
        
      for (int i =0; i <= 599; i++)
      {
      cmd = new OleDbCommand();
      cmd.Parameters.Clear();
      cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
      cmd.CommandText = cmd.CommandText = "insert into mm (1,2,3) values (@a,@a,@a) ";
      cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
      cmd.Connection = con;
      int cd = cmd.ExecuteNonQuery();
      }
      

  6.   

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");  OleDbCommand cmd = null;
      con.Open();
        
        
      for (int i =0; i <= 599; i++)
      {
      cmd = new OleDbCommand();
      cmd.Parameters.Clear();
      cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
      cmd.CommandText = "insert into mm (1,2,3) values (@a,@a,@a) ";
      cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
      cmd.Connection = con;
      int cd = cmd.ExecuteNonQuery();
      }
      

  7.   

    我吧意思再说清楚点哈  字段不止三个  而且数组的值也不一样   我现在有一个button按钮,每按一下button,首先在数据表里添加一个字段,然后将数组的值从该列的第一行开始插入(上面的三个字段我只是举的例子)
      

  8.   


    我现在将button按钮的添加列的事件去掉了,button的事件现在就是将数组的数据插入到数据表里(数据表里我预先设了几个列(1,2,3,4,5)可是问题还那样啊。插第二列的时候还是从501行开始的???要是按行存储的话就不会出现这样的问题,可是要的是按列存储啊。。
      

  9.   

    假設你的這個table裏除了你程序控制增加的字段外,還有一個自動增長列,那就更加好辦了。
    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");  OleDbCommand cmd = null;
      con.Open();
      bool flag = false;
        
      for (int i =0; i <= 599; i++)
      {
      cmd = new OleDbCommand();
      cmd.Parameters.Clear();
      cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
      //第一次新增字段,insert
      if(flag == false)
      {
           cmd.CommandText = "insert into mm (第一次添加的字段名稱) values (@a,@a,@a) ";
           cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
           cmd.Connection = con;
           int cd = cmd.ExecuteNonQuery();
           flag = true;
      }
      // 以後每次用update
       else
        {
            cmd.CommandText = "UPDATE mm SET (第N(N>1)次添加的字段名稱)=@a WHERE ID(自增列)="i.ToString();
           cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
           cmd.Connection = con;
           int cd = cmd.ExecuteNonQuery();
        }
    }
    當然大致是這麼處理的,你將每次產生的字段名稱設置一個比較好的規則的話,相信比較好處理。
      

  10.   

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:\\mm.mdb");  OleDbCommand cmd = null;
      con.Open();
      bool flag = false;
        
      for (int i =0; i <= 599; i++)
      {
      cmd = new OleDbCommand();
      cmd.Parameters.Clear();
      cmd.Parameters.Add(new OleDbParameter("@a", OleDbType.Decimal, 100));
      //第一次新增字段,insert
      if(flag == false)
      {
      cmd.CommandText = "insert into mm (第一次添加的字段名稱) values (@a,@a,@a) ";
      cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
      cmd.Connection = con;
      int cd = cmd.ExecuteNonQuery();
      }
      // 以後每次用update
      else
      {
      cmd.CommandText = "UPDATE mm SET (第N(N>1)次添加的字段名稱)=@a WHERE ID(自增列)="i.ToString();
      cmd.Parameters["@a"].Value = CH372_Saved_Wave[i];
      cmd.Connection = con;
      int cd = cmd.ExecuteNonQuery();
      }
    }
    flag = true;這行代碼應該去掉
      

  11.   

    "UPDATE mm SET (第N(N>1)次添加的字段名稱)=@a WHERE ID(自增列)="i.ToString();这句我写的怎么有错啊??假如N=2  那这句该怎么写哈??要是没有自增列呢??
      

  12.   

    insert into tableName values(a,b,c);
      

  13.   


    用update的话是可以从第一行开始存起  但是整个列的值都会变成一个值了