DataGridView 使用问题!!!
本人初学DataGridView:问一下,我在DataGridView界面上输入了十个新行,但是数据库里并没有保存,怎样才能把新添加的数据保存到数据库里。
另外,我想在输入的时候验证数据的正确性和完整性。有没有好的例子。
--------------------编程问答-------------------- 保存的话,需要你自己写SQL语句吧。 --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- SQL语句我知道,但是应该有比较简单的或者有效率的方法吧!
不会是这样吧
StringBuilder s = new StringBuilder();
s.Append("insert into tb(col1,col2) select ')
for(int i = 0 ;i< dataGridView1.Rows; i++)
{
s.Append(dgvProducts[1,i].Value.ToString() + ",");
s.Append(dgvProducts[1,i].Value.ToString() + " union select");
}
然后运行SQL语句? --------------------编程问答-------------------- 验证输入的完整性 就用 cellEndEdit事件,具体的就是验证那几个格子不能为空
至于一次性保存数据,可以用循环,也可以用dataset更新数据库
用dataset更新数据库,有很多例子,查查就找得到。
提供循环的
--------------------编程问答-------------------- cellLeave和cellEndEdit ,有什么区别呢,哪个好,我刚找到这个cellLeave事件
if(datagridview.rows.count>0)//确保不为空
{
for(int i=0;i<=datagridview.rows.count-1;i++)
{
string instr="insert into table(A,B) values('"+datagridveiw1.rows[i].cells[0].tostring()+"'...........)";//后面的自己写
...............
.............
}
}
循环我知道,但是由于已经有数据了,所以我还要先记住已有行数,最后再用总数减,所以想找个好用的方法。
而且,用SQL语句如果字段很多,并且行数也很多的话,构造的SQL语句会超出存储过程中varchar的最大值
DateSet保存怎么用? --------------------编程问答-------------------- SqlCommand cmd=connect.CreateCommand();
cmd.CommandText="select ..........";
SqlDataApdater da=new SqlDataApdater(cmd)
Dataset ds=new Dataset();
da.fill(ds);
da.Update(ds);
基本上就这样,具体怎么写,去网上找个吧,多的像蚂蚁!
但你用这方法,有可能出错,更新倒是不会出错,就在保存时容易出错。 --------------------编程问答-------------------- [align=left] private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString() == "")
{
dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex];
}
}[/align]
我上面这些代码用来判断,如果输入空值,那么输入的焦点还是当前的单元格,可是却没有效果,为什么??? --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 是不是想达到和DELPHI的那种效果啊,那样的话数据源直接绑定DATATABLE,不要绑定DATAVIEW,DATAVIEW是视图来的
然后直接update(); --------------------编程问答-------------------- 验证的话他会根据DATATABLE对应的字段的类型自动判断的 --------------------编程问答-------------------- 就合你把TEXTBOX里面东西保存到数据库差不多,自己写SQL语句 --------------------编程问答-------------------- 顶一下
--------------------编程问答-------------------- for (int i = 0; i < this.dgvJinhuowupin.RowCount; i++)
{
ShangpinId = this.dgvJinhuowupin.Rows[i].Cells["商品编号"].Value.ToString();
Shangpinname = this.dgvJinhuowupin.Rows[i].Cells["商品名称"].Value.ToString();
Shangpinguige = this.dgvJinhuowupin.Rows[i].Cells["商品规格"].Value.ToString();
string a=ShangpinId;
string b=Shangpinname;
string c=Shangpinguige;
string sqlSelect = "insert into Jinhuoshangpinru(shangpinid,shangpinname,Shangpinguige)value('"+a+"','"+b+"','"+c+"')";
scd = new SqlCommand(sqlSelect,con);
int result = scd.ExecuteNonQuery();
if (result <= 0)
{
MessageBox.Show("插入数据失败");
break;
}
}
刚做出来的 循环插入数据库 --------------------编程问答-------------------- 验证完整性,可以通过现成的验证控件,设置好你的验证规则就好了,至于如何存到数据库中,基本上除了遍历datagridview没有别的办法,可以用dataset存储数据然后利用dataadapter.update保存数据,也可以用存储过程,也可以拼SQL看具体的要求、需求和个人喜好了
补充:.NET技术 , C#