DataGridView增

hhc123 2010-01-12 04:36:43

OleDbConnection ocon;
DataSet ds = new DataSet();
OleDbDataAdapter oda ;
private void button1_Click(object sender, EventArgs e)
{

OleDbCommandBuilder al = new OleDbCommandBuilder(oda);
//表里面一定要有主键
oda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;


}
private void button2_Click(object sender, EventArgs e)
{
ocon = new OleDbConnection(strconn);

ocon.Open();
string sql = "select * from UserInfo";
oda = new OleDbDataAdapter(sql,ocon);


oda.Fill(ds);
[ this.dataGridView1.DataSource = ds.Tables[0].DefaultView;]
}

众所周知,上面是代码是干什么用的吧,在dataGridView1中更删改数据
但是我把[]里面的删了.再从dataGridView中添加数据,但是数据库中也没见多了什么,少了什么。
应该怎么办?
(就是不想一条条的增加啊,难不成要一条条的加进入)

...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhc123 2010-01-12
  • 打赏
  • 举报
回复
有办法,玩透DataGridView,来解决一下。
hhc123 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qldsrx 的回复:]
你必须保证有这句:
this.dataGridView1.DataSource = ds.Tables[0]
不然你的DataTable都没有变化,如何更新到数据库?
[/Quote]

private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
MessageBox.Show("输入完行了");
}

private void dataGridView1_NewRowNeeded(object sender, DataGridViewRowEventArgs e)
{

}

private void dataGridView1_AllowUserToAddRowsChanged(object sender, EventArgs e)
{

}

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{


}


private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
MessageBox.Show("输入完行了");
}

我现在的想法是界面上只要一个保存按钮和一个dataGridview。
本来呢建一个DataTable
在dataGridView添加完一行后触发把这行的数据加到DataTable,然后由再一起插入数据库当中。
发现这死dataGridView,输入数据后,直接又产生一行空的出来,导致不能正常把数据输入DataTable,
(像上面写dataGridView自带的事件根本就不准确啊(也许我还没看出应该怎么用啊),)看来得自己添加事件了,
qldsrx 2010-01-12
  • 打赏
  • 举报
回复
你必须保证有这句:
this.dataGridView1.DataSource = ds.Tables[0]
不然你的DataTable都没有变化,如何更新到数据库?
flyfly2008 2010-01-12
  • 打赏
  • 举报
回复
5#正解
Uncle_Yong 2010-01-12
  • 打赏
  • 举报
回复
你操作后,还没有提交你的更新。
wxm3630478 2010-01-12
  • 打赏
  • 举报
回复
要加这么一句吗?----ds.AcceptChanges();

我这里有一个直接把DataTable 更新到数据库里的方法 看下吧!


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
try
{

SqlConnection con = DB.CreateCon();

con.Open();

string[] test ={ "a", "b", "c" };
string[] arr ={"1","2","3" };
string[] ok ={"m","n","o" };

String SqlStr = "select * from test";

//新建内存表dt
DataTable dt = new DataTable("test");

dt.Columns.Add("test", System.Type.GetType("System.String"));
dt.Columns.Add("arr", System.Type.GetType("System.String"));
dt.Columns.Add("ok", System.Type.GetType("System.String"));

//增加数组里的数据
for (int i = 0; i < arr.Length; i++)
{
DataRow row = dt.NewRow();

row["test"] = test[i];
row["arr"] = arr[i];
row["ok"] = ok[i];

dt.Rows.Add(row);

//显示当前行的状态

Console.Write(row[0].ToString());

}

//建立sql适配器

SqlDataAdapter dap = new SqlDataAdapter(SqlStr,con);

SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(dap);

//建立sql数据集 并且更新数据库
DataSet ds = new DataSet();

ds.Tables.Add(dt);

int val = dap.Update(ds, "test");

ds.AcceptChanges();

}
catch(SqlException ex)
{
Console.Write(ex.Errors);
}


}
}

class DB
{
public static SqlConnection CreateCon()
{
return new SqlConnection("server=WWW-16EA86D80FF;uid=sa;Pwd=1;database=test");
}

}
}
zishanyan 2010-01-12
  • 打赏
  • 举报
回复
DataGridView用的不多,我只直接绑定数据源,然后再在按钮单击事件里写 oda.Update(ds);就直接都更新进去了
hhc123 2010-01-12
  • 打赏
  • 举报
回复

//this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
这句不加进去就是不想让别人看到里面的东西
adapter.InsertCommand = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection);
像这样子也不是动态生成sql语句啊
平生我自如 2010-01-12
  • 打赏
  • 举报
回复
我是小兵
hhc123 2010-01-12
  • 打赏
  • 举报
回复
SOS

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧