date="'"+dtime+","+save[i,0].ToString()+","+save[i,1].ToString()+","+save[i,2].ToString()+","+save[i,3].ToString()+","+save[i,4].ToString()+","+save[i,5].ToString()+","+save[i,6].ToString()+"'";
              
ocmd.CommandText = "insert into hao(日期,NO1,NO2,NO3,NO4,NO5,NO6,NO7) values("+date+")";
ocmd.ExecuteNonQuery();
在上面的代码中,values的值如果用一个字符串变量代替,它就不行。但我又需要这样,请高手给个办法!

解决方案 »

  1.   

    这样写date就应该可以了:
    date="'"+dtime+"','"+save[i,0].ToString()+"','"+save[i,1].ToString()+"','"+save[i,2].ToString()+"','"+save[i,3].ToString()+"','"+save[i,4].ToString()+"','"+save[i,5].ToString()+"','"+save[i,6].ToString()+"'"; 
      

  2.   

    主要还是拼接字符串的问题
    因为有的需要单引号,有的不需要。这里很容易出错。
    我个人还是习惯用如下方式
    string model="'{0}',{1},{2},{3},{4},{5},{6},{7}";
    在使用的时候
    string.Format(model,save[i,0],save[i,1],save[i,2],save[i,3],save[i,4],save[i,5],save[i,6],save[i,7]);
    这样更清晰。
      

  3.   


    SqlCommand ocmd = new SqlCommand();
    ocmd.CommandText = "INSERT INTO hao(日期,NO1,NO2,NO3,NO4,NO5,NO6,NO7) VALUES (@日期,@NO1,@NO2,@NO3,@NO4,@NO5,@NO6,@NO7)";
    ocmd.Parameters.Add("@日期", SqlDbType.VarChar).Value = dtime;
    ocmd.Parameters.Add("@NO1", SqlDbType.VarChar).Value = save[i, 0].ToString();
    ocmd.Parameters.Add("@NO2", SqlDbType.VarChar).Value = save[i, 1].ToString();
    ocmd.Parameters.Add("@NO3", SqlDbType.VarChar).Value = save[i, 2].ToString();
    ocmd.Parameters.Add("@NO4", SqlDbType.VarChar).Value = save[i, 3].ToString();
    ocmd.Parameters.Add("@NO5", SqlDbType.VarChar).Value = save[i, 4].ToString();
    ocmd.Parameters.Add("@NO6", SqlDbType.VarChar).Value = save[i, 5].ToString();
    ocmd.Parameters.Add("@NO7", SqlDbType.VarChar).Value = save[i, 6].ToString();
    ocmd.ExecuteNonQuery(); 上面代码中, Value = 后面可以用变量. 
      

  4.   

    date="'"+dtime+","+save[i,0].ToString()+","+save[i,1].ToString()+","+save[i,2].ToString()+","+save[i,3].ToString()+","+save[i,4].ToString()+","+save[i,5].ToString()+","+save[i,6].ToString()+"'"; 
                  
    ocmd.CommandText = "insert into hao(日期,NO1,NO2,NO3,NO4,NO5,NO6,NO7) values("+date+")"; 
    ocmd.ExecuteNonQuery(); 
    你这样写好像vb的 方法,还是用其他的方法比较合适
      

  5.   

    ACCESS数据库的格式OleDbCommand ocmd = new OleDbCommand();
    ocmd.CommandText = "INSERT INTO hao(日期,NO1,NO2,NO3,NO4,NO5,NO6,NO7) VALUES (@日期,@NO1,@NO2,@NO3,@NO4,@NO5,@NO6,@NO7)";
    ocmd.Parameters.Add("@日期", OleDbType.DBTime).Value = dtime;
    ocmd.Parameters.Add("@NO1", OleDbType.VarChar).Value = save[i, 0].ToString();
    ocmd.Parameters.Add("@NO2", OleDbType.VarChar).Value = save[i, 1].ToString();
    ocmd.Parameters.Add("@NO3", OleDbType.VarChar).Value = save[i, 2].ToString();
    ocmd.Parameters.Add("@NO4", OleDbType.VarChar).Value = save[i, 3].ToString();
    ocmd.Parameters.Add("@NO5", OleDbType.VarChar).Value = save[i, 4].ToString();
    ocmd.Parameters.Add("@NO6", OleDbType.VarChar).Value = save[i, 5].ToString();
    ocmd.Parameters.Add("@NO7", OleDbType.VarChar).Value = save[i, 6].ToString();
    ocmd.ExecuteNonQuery(); 
      

  6.   

    只要数据类型对应,正常来说是可以的,对Access的操作跟MSSQL的差别还是有的,很在MSSQL下正确执行的代码,在Access不一定能用