我写了一个控制台的小例题,主要是对一个数据表进行操作,为什么修改的数据可以提交到数据库表中,而新增加的数据却提交不上?大家一般都怎么写啊?请熟悉的指点下,或发一个小例子给我([email protected]),先谢谢了
代码如下:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace ConsoleApplication2
{
class Program
{
SqlConnection Conn;
/// <summary>
/// 打开数据库连接
/// </summary>
public void OpenDataBase()
{
Conn = new SqlConnection("Data Source=.; database=HZYC; User id=sa; pwd=;");
Conn.Open();
}
/// <summary>
/// 数据操作
/// </summary>
public void Test_OperatData()
{
Console.WriteLine("根据Select 条件筛选记录 并修改”部门名称“结果:");
OpenDataBase();
SqlDataAdapter da = new SqlDataAdapter("select * from Base_Department", Conn);
DataSet ds = new DataSet("Depart");
da.Fill(ds, "Depart");
SqlCommandBuilder builder = new SqlCommandBuilder(da);
DataRow[] fdr = ds.Tables["Depart"].Select("DepartName=\'总经办2\'");
if (fdr.Length <= 0)
{
Console.WriteLine("没有找到匹配的行");
}
else
{
Console.WriteLine("查找到匹配的行");
fdr[0].BeginEdit();
fdr[0]["DepartName"] = "总经办22";
fdr[0].EndEdit();
Console.WriteLine("修改前的部门名称:{0}", fdr[0]["DepartName", DataRowVersion.Original]);
Console.WriteLine("修改后的部门名称:{0}", fdr[0]["DepartName", DataRowVersion.Current]);
} //新增一行
/*DataRow newrow = ds.Tables["Depart"].NewRow();
newrow["ID"] = 100;
newrow["DepartName"] = "新增部门";
ds.Tables["Depart"].AcceptChanges();*/
Console.WriteLine("显示修改后的数据:");
foreach (DataRow dr in ds.Tables["Depart"].Rows)
{
Console.WriteLine("\t{0}\t{1}", dr["DepartName"].ToString(), dr["ID"].ToString());
} da.Update(ds.Tables["Depart"]);//提交回数据库
Console.ReadLine();
}
/// <summary>
/// 主程序
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//DataReader例题
Program p = new Program();
p.Test_OperatData();
}
}
}
代码如下:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace ConsoleApplication2
{
class Program
{
SqlConnection Conn;
/// <summary>
/// 打开数据库连接
/// </summary>
public void OpenDataBase()
{
Conn = new SqlConnection("Data Source=.; database=HZYC; User id=sa; pwd=;");
Conn.Open();
}
/// <summary>
/// 数据操作
/// </summary>
public void Test_OperatData()
{
Console.WriteLine("根据Select 条件筛选记录 并修改”部门名称“结果:");
OpenDataBase();
SqlDataAdapter da = new SqlDataAdapter("select * from Base_Department", Conn);
DataSet ds = new DataSet("Depart");
da.Fill(ds, "Depart");
SqlCommandBuilder builder = new SqlCommandBuilder(da);
DataRow[] fdr = ds.Tables["Depart"].Select("DepartName=\'总经办2\'");
if (fdr.Length <= 0)
{
Console.WriteLine("没有找到匹配的行");
}
else
{
Console.WriteLine("查找到匹配的行");
fdr[0].BeginEdit();
fdr[0]["DepartName"] = "总经办22";
fdr[0].EndEdit();
Console.WriteLine("修改前的部门名称:{0}", fdr[0]["DepartName", DataRowVersion.Original]);
Console.WriteLine("修改后的部门名称:{0}", fdr[0]["DepartName", DataRowVersion.Current]);
} //新增一行
/*DataRow newrow = ds.Tables["Depart"].NewRow();
newrow["ID"] = 100;
newrow["DepartName"] = "新增部门";
ds.Tables["Depart"].AcceptChanges();*/
Console.WriteLine("显示修改后的数据:");
foreach (DataRow dr in ds.Tables["Depart"].Rows)
{
Console.WriteLine("\t{0}\t{1}", dr["DepartName"].ToString(), dr["ID"].ToString());
} da.Update(ds.Tables["Depart"]);//提交回数据库
Console.ReadLine();
}
/// <summary>
/// 主程序
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//DataReader例题
Program p = new Program();
p.Test_OperatData();
}
}
}
解决方案 »
- 如何查到 list<T> 中的指定对象
- 【请教】托盘程序如何添加到系统服务中执行?
- C# 如何让用户点击一个按钮,弹出一个对话框提示是保存还是打开一个Excel文件呢?
- 送分题,看看这段简单代码如何转换成C#
- POP3接受邮件的问题?
- 程序自己退出,没有提示,这个是事件日志中的提示,请问是什么原因造成的?
- 微软为什么不把所有的api都封装到一个静态的类里面,
- 如何去掉扩展名,最简单方法
- 高分相送..怎样在installshield中加入.net框架和MDAC.谢谢!!!
- 怎样设定自定义控件的样式表
- VS2005 C# WEB swf 文件背景透明问题,
- 我找的代码组合一起的,大家帮忙怎么把这数据组合,一个函数里的数据源在令个函数里怎么调起来
newrow["ID"] = 100;
newrow["DepartName"] = "新增部门";
ds.Tables["Depart"].AcceptChanges();*/
被注释掉了,你怎么新加啊?
DataRow newrow = ds.Tables["Depart"].NewRow();
newrow["ID"] = 100;
newrow["DepartName"] = "新增部门";
ds.Tables["Depart"].Rows.Add(newrow); //这个地方你还没有加进去呢。
ds.Tables["Depart"].AcceptChanges();
Console.WriteLine("显示修改后的数据:");
ds.Tables["Depart"].Rows.Add(newrow);
的问题
ds.Tables["Depart"].Rows.Add(newrow); 吗?
不太明白啊。
我初学者
现在提交成功了。
为什么加上这一行的时候反而提交会不成功?
你就调用了一次,就不存在提交了,还是好好看看MSDN就可以了,其实这句话本来是不需要的。调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象将成功结束其编辑。DataRowState 也发生更改:所有 Added 和 Modified 行成为 Unchanged;Deleted 行被移除。
在您尝试使用 DbDataAdapter.Update 方法更新 DataSet 之后,通常会对 DataTable 调用 AcceptChanges 方法。