我的问题是这样的
有一个数据库表格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个数组中的数据插入相应的数据库中的列中。这方面不是很清楚,搜索了论坛,很多描述的也不是很好啊。所以还是发个帖问问懂的人。
我希望数据插入比较快,越快越好。
谢谢了!
有一个数据库表格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个数组中的数据插入相应的数据库中的列中。这方面不是很清楚,搜索了论坛,很多描述的也不是很好啊。所以还是发个帖问问懂的人。
我希望数据插入比较快,越快越好。
谢谢了!
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";
运行得到以下错误:分析查询时出错。 [ 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();
}
}
}
}
能给我说一下什么原因吗?不好意思。没有仔细分析你的代码就这样问你。
最好再加上换行就可以了。
改为:sb.Append((i == 0 ? "" : (Char)10 + " UNION ALL ") + "SELECT '"+ cvValueA[i] + "' a,'" + cvValueB[i] + "' b,'" + cvValueC[i] + "' c");
我明天再研究研究。好像select 那里有问题啊!