我的问题是这样的
有一个数据库表格table1,有以下几列:
Time    CVA      CVB     CVC
 
因为我的数据量比较块,所以我不想采用以下的插入: string commandText = "INSERT INTO CVRealTable(Time,CVA,CVB,CVC) VALUES('"+DateTime+"',
                      '" +cvValueA "',‘“+cvValueB+"','"+cvValueB+"')";这样的话,我每打开一次数据库,每列插入一个数据,太慢了!
所以我想建立3个数组cvValueA[64] ,cvValueB[64],cvValueC[64].每次打开数据库,就把这3个数组中的数据插入相应的数据库中的列中。这方面不是很清楚,搜索了论坛,很多描述的也不是很好啊。所以还是发个帖问问懂的人。
我希望数据插入比较快,越快越好。
谢谢了!

解决方案 »

  1.   

            StringBuilder sb = new StringBuilder();
            for(int i=0;i<64;i++)
            {
                sb.Append((i == 0 ? "" : "UNION ALL ") + "SELECT '" + cvValueA[i] + "' a,'" + cvValueB[i] + "' b,'" + cvValueC[i] + "' c");
            }
    String commandText = "INSERT CVRealTable(CVA,CVB,CVC) SELECT * FROM (" + sb.ToString() + ") x";
      

  2.   

    按照你的代码,我修改了测试程序。(不好意思,这方面我是新手,你的代码还不是很懂,所以照搬了。)
    运行得到以下错误:分析查询时出错。 [ Token line number = 1,Token line offset = 43,Token in error = SELECT ]
    class Class1
        {
                // 测试10个数字
            int[] cvValueA={1,1,1,1,1,1,1,1,1,1};
            int[] cvValueB ={ 2,2,2,2,2,2,2,2,2,2};
            int[] cvValueC ={ 3,3,3,3,3,3,3,3,3,3};
            public void AddValueToDataBase()
            {
                //建立连接字符
                string connString = "Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\Database1.sdf;";
               //这是你的代码
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < 10; i++)
                {
                    sb.Append((i == 0 ? "" : "UNION ALL ") + "SELECT '"+ cvValueA[i] + "' a,'" + cvValueB[i] + "' b,'" + cvValueC[i] + "' c");
                }
    // 建立的表格是table1
               string commandText = "INSERT table1(CVA,CVB,CVC) SELECT * FROM (" + sb.ToString() + ") x";
               using (SqlCeConnection conn = new SqlCeConnection(connString))
                {
                    using (SqlCeCommand cmd = new SqlCeCommand(commandText, conn))
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery(); // 运行到这里报错
                        conn.Close();
                    }
                }      
            }
        }
    能给我说一下什么原因吗?不好意思。没有仔细分析你的代码就这样问你。
      

  3.   

    union时没分空格。
    最好再加上换行就可以了。
    改为:sb.Append((i == 0 ? "" : (Char)10 + " UNION ALL ") + "SELECT '"+ cvValueA[i] + "' a,'" + cvValueB[i] + "' b,'" + cvValueC[i] + "' c");
      

  4.   

    其实这种问题,你自己把commandText输出来看一下就知道哪里错了。
      

  5.   

    还是同样的问题啊!
    我明天再研究研究。好像select 那里有问题啊!
      

  6.   

    那几位朋友写的如果在windows 下面都可以的。可是我用的是wince 5.0 数据库是sql server 2005 ce。所以还是不能解决问题啊!