string cnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB1.MDB";
OleDbConnection cn = new OleDbConnection(cnStr);
cn.Open();
OleDbCommand Cmd = new OleDbCommand("Select * From 表1", cn);
OleDbDataAdapter myAdapter = new OleDbDataAdapter();
myAdapter.SelectCommand = Cmd;
OleDbCommandBuilder cb = new OleDbCommandBuilder(myAdapter);
DataSet ds = new DataSet();
myAdapter.Fill(ds, "表1"); listView1.Clear();
listView1.View = View.Details;
listView1.GridLines = true;
DataColumn cl1 = new DataColumn();
DataTable dt = new DataTable();
dt.PrimaryKey = new DataColumn[] { dt.Columns["品名"] };
foreach (DataColumn cl in ds.Tables["表1"].Columns)
{
listView1.Columns.Add(cl.ColumnName, 80, HorizontalAlignment.Left);
} //DataSet ds = new DataSet();
DataRow dr1 = ds.Tables["表1"].NewRow();
dr1[0] = "1";
dr1[1] = "2";
dr1[2] = "3";
dr1[3] = "4";
ds.Tables["表1"].Rows.Add(dr1); int i = 0;
string[] r = new string[4];
foreach (DataRow dr in ds.Tables["表1"].Rows)
{
r[0] = dr[0].ToString();
r[1] = dr[1].ToString();
r[2] = dr[2].ToString();
r[3] = dr[3].ToString();
listView1.Items.Add(r[0]);
listView1.Items[i].SubItems.Add(r[1]);
listView1.Items[i].SubItems.Add(r[2]);
listView1.Items[i].SubItems.Add(r[3]);
i += 1;
}
myAdapter.Update(ds, "表1");
cn.Close();我的数据库是有主键的.
OleDbConnection cn = new OleDbConnection(cnStr);
cn.Open();
OleDbCommand Cmd = new OleDbCommand("Select * From 表1", cn);
OleDbDataAdapter myAdapter = new OleDbDataAdapter();
myAdapter.SelectCommand = Cmd;
OleDbCommandBuilder cb = new OleDbCommandBuilder(myAdapter);
DataSet ds = new DataSet();
myAdapter.Fill(ds, "表1"); listView1.Clear();
listView1.View = View.Details;
listView1.GridLines = true;
DataColumn cl1 = new DataColumn();
DataTable dt = new DataTable();
dt.PrimaryKey = new DataColumn[] { dt.Columns["品名"] };
foreach (DataColumn cl in ds.Tables["表1"].Columns)
{
listView1.Columns.Add(cl.ColumnName, 80, HorizontalAlignment.Left);
} //DataSet ds = new DataSet();
DataRow dr1 = ds.Tables["表1"].NewRow();
dr1[0] = "1";
dr1[1] = "2";
dr1[2] = "3";
dr1[3] = "4";
ds.Tables["表1"].Rows.Add(dr1); int i = 0;
string[] r = new string[4];
foreach (DataRow dr in ds.Tables["表1"].Rows)
{
r[0] = dr[0].ToString();
r[1] = dr[1].ToString();
r[2] = dr[2].ToString();
r[3] = dr[3].ToString();
listView1.Items.Add(r[0]);
listView1.Items[i].SubItems.Add(r[1]);
listView1.Items[i].SubItems.Add(r[2]);
listView1.Items[i].SubItems.Add(r[3]);
i += 1;
}
myAdapter.Update(ds, "表1");
cn.Close();我的数据库是有主键的.
解决方案 »
- 在线等候赐教——在结构化的异常处理时,怎么进行循环?
- 未将对象引用设置到对象的实例
- 怎样将文本文件里的一部分行删除掉,利用StreamReader怎么实现。。急啊...
- 简单登陆问题,说明原理立刻结贴。
- 一个关于IrisSkin皮肤控件的问题
- 请给位高手指点一下我,谢谢了!
- 如何用dev 的Gridcontrol 控件的CardView 显示我的计算机上的某个文件夹里的图片,比如说照片 jpg各式的
- C#一个事件接收者如何订阅多个事件
- 以下VB程序如何改成C#
- COMBOBOX 数据绑定的问题?
- 我要在页面的Page_Load里执行一个发邮件的函数,页面只有这个功能,防止别人重复刷新重复提交,请指教
- 高手来,如何用C#实现一个添加,移出操作的时间复杂度为O(1)的双向链表,什么ArrayList,Queue,LinkedList都可以不用说了,说了也不给分.
this.sqlDataAdapter1.Update(ds, tablename); 用这个
如果是绑定的话这个可以
DataSet dsPubs = new DataSet("Pubs");
daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");
private void DataSetUpdate(string Datatablename, string sqlstr)
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, new SqlConnection(SqlHelper.ConnectionString)); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter); adapter.DeleteCommand = new SqlCommand("", new SqlConnection(SqlHelper.ConnectionString));
adapter.InsertCommand = new SqlCommand("", new SqlConnection(SqlHelper.ConnectionString));
adapter.UpdateCommand = new SqlCommand("", new SqlConnection(SqlHelper.ConnectionString));
adapter.SelectCommand = new SqlCommand(sqlstr, new SqlConnection(SqlHelper.ConnectionString)); adapter.DeleteCommand = cmdBuilder.GetDeleteCommand();
adapter.InsertCommand = cmdBuilder.GetInsertCommand();
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
adapter.Update(ds, Datatablename);
}
catch (Exception ex)
{
throw ex;
}
}
,这个会根据你的查询语句,自动生成更新逻辑!不需要单独写updatecommand的!
Data Source= ¦DataDirectory ¦\DB1.MDB ";
//看的和代码操作的是否是同一目录下的数据库
程序貌似没看出问题来
默认调用,updatecommand方法
这方法这根新dataset中更新的数据,即datatype=update的。
1,你要么跟新数据
2,要么你改变dataset中数据的状态
3,不知道你要实现什么功能?(批量导入更新最好用,sqlbulkcopy,)
就是用OFFICE打开的时候看不到新的数据.
呵呵,数据库不知道怎么做
OleDbConnection cn = new OleDbConnection(cnStr);
cn.Open();
OleDbCommand Cmd = new OleDbCommand( "Select * From orders ", cn);
OleDbDataAdapter myAdapter = new OleDbDataAdapter();
myAdapter.SelectCommand = Cmd;
OleDbCommandBuilder cb = new OleDbCommandBuilder(myAdapter);
DataSet ds = new DataSet();
myAdapter.Fill(ds, "orders");
//ds.AcceptChanges(); foreach(DataRow drI in ds.Tables["orders"].Rows )
{
if (drI["ShippedDate"].ToString() == "")
continue;
drI["ShippedDate"] = Convert.ToDateTime(drI["ShippedDate"]).AddMinutes(3);
} int i = myAdapter.Update(ds, "orders");
cn.Close(); 以上这段代码运行成功.结果正确.
LZ请比较一下.
另外,注意ACCESS文件需要是可写的.