我用Access做的数据库 里面有一张表 表里有三列值(字段名是1,2,3)我将一个有500个数据的数组的值插到数据表里(一列一列的插的)插第一列的时候是从第一行开始的 可插第二列的时候却不从第一行开始 而是从501行开始,这是为什么????????????? ————————各位大侠帮帮忙,情况紧急哈--------------如图:
1 2 3
0
1
2
.
.
.
500
0
1
2
.
.
.
500
0
1
2
.
.
.
500
1 2 3
0
1
2
.
.
.
500
0
1
2
.
.
.
500
0
1
2
.
.
.
500
解决方案 »
- 关于TcpListener 多线程关闭监听的问题
- c#使用AxAcroPDF控件时如何屏蔽鼠标右键及鼠标滚轮操作?
- 为什么数据新增后,用reader读出来是空值???
- C#如何执行 ftp的 site命令
- 求教:为什么要用CallContext,CallContext到底是什么呢
- 这种报错:“Application”是不明确的引用,怎么办?
- 小弟做的一个合并文件还原文件的小程序,现发送源码,要者请进.
- 如何实现选中listview中记录,在控件框中自动关联显示出记录?
- pointf 赋值时,出现:无法将float隐式转换成int的错误。
- !!!!!!!!!好书好书,快来看
- 关于:ProcessWindowStyle.Hidden隐藏后如何再显示?
- Form1.Activate()不能实现Form1窗口激活!!!
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();
}
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();
}
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();
}
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();
}
我现在将button按钮的添加列的事件去掉了,button的事件现在就是将数组的数据插入到数据表里(数据表里我预先设了几个列(1,2,3,4,5)可是问题还那样啊。插第二列的时候还是从501行开始的???要是按行存储的话就不会出现这样的问题,可是要的是按列存储啊。。
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();
}
}
當然大致是這麼處理的,你將每次產生的字段名稱設置一個比較好的規則的話,相信比較好處理。
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;這行代碼應該去掉
用update的话是可以从第一行开始存起 但是整个列的值都会变成一个值了