前一段时间在做这个事,不过我用的ACCESS,因为我是学生,不需要用Oracle,Sql server 也可以用 我修改数据后一般都用向导生成的TableAdapter来更新ACCESS数据库,很方便,一句话就ok了。(前提是使用向导生成的DataSet)
string strSql="update table set ...."; string strConnection = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; SqlConnection msConn = new SqlConnection(strConnection); SqlCommand mscomm = new SqlCommand(strSql, msConn); if (mscomm.ExecuteNonQuery() > 0) { Response.Write("修改成功"); } else { Response.Write("失败"); }
这个我觉得属于SQL语句的范畴吧。 update tableName set column1=value1,....
比如前台datagrid view的dataset是通过复杂的嵌套语句显示的。比如有这样一个表 tb parentID childID name 0 0 A 0 1 B 0 2 C 1 3 D 1 4 E 3 5 F 3 6 G 我们在前台显示的时候,不可能显示parentID只能显示ID号码,应该显示对应的名称。比如dataset的fill方法使用如下语句 select ParentName = (select name from tb where childID = a.parentID) ,name from tb a 但是对应的insert方法就会出现问题。 因为我们存入数据库表的应该是 parentID,childID,name。childID使用identiy自增, 那么parentID,就没有办法获取了。很苦恼
SqlCommand cmd = new SqlCommand(); cmd.CommandText="update 表名 set 字段1=@字段1 where 主键=@主键"; cmd.Parameters.Add(new SqlParameter("@参数1",SqlDbType.VarChar,50,"字段名"))SqlDataAdapter da = new SqlDataAdapter(); da.UpdateCommand = cmd;
如果要insert 楼主你的select语句不对 应该是 select ParentName =parentID, (select name from tb where childID = a.parentID) ,name from tb a 在数据源的显示控件中不显示parentID列 不要用自动生成的Updata语句 用INSERT INTO a (parentID,name ) VALUES (@parentID,@name )
我修改数据后一般都用向导生成的TableAdapter来更新ACCESS数据库,很方便,一句话就ok了。(前提是使用向导生成的DataSet)
string strSql="update table set ....";
string strConnection = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection msConn = new SqlConnection(strConnection);
SqlCommand mscomm = new SqlCommand(strSql, msConn);
if (mscomm.ExecuteNonQuery() > 0)
{
Response.Write("修改成功");
}
else
{
Response.Write("失败");
}
update tableName set column1=value1,....
tb
parentID childID name
0 0 A
0 1 B
0 2 C
1 3 D
1 4 E
3 5 F
3 6 G 我们在前台显示的时候,不可能显示parentID只能显示ID号码,应该显示对应的名称。比如dataset的fill方法使用如下语句
select ParentName = (select name from tb where childID = a.parentID) ,name from tb a 但是对应的insert方法就会出现问题。
因为我们存入数据库表的应该是 parentID,childID,name。childID使用identiy自增,
那么parentID,就没有办法获取了。很苦恼
cmd.CommandText="update 表名 set 字段1=@字段1 where 主键=@主键";
cmd.Parameters.Add(new SqlParameter("@参数1",SqlDbType.VarChar,50,"字段名"))SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = cmd;
他的意思是动态添加update语句 这样就可动态改变commandtext语句
然后
DataSet d=new DataSet();
da.fill(ds)
字段1=@字段1~~~这里?
比如dataset不是整体提交么。用户一次性插入或者修改了多条记录。
那这个参数??怎么处理的呢?
STRING是可以+= 的
再建立 SQL语句之前
完全可以用 一个变量来决定 生成什么样的SQL语句。。
所以我觉得....貌似没那么复杂
应该是 select ParentName =parentID, (select name from tb where childID = a.parentID) ,name from tb a
在数据源的显示控件中不显示parentID列
不要用自动生成的Updata语句
用INSERT INTO a
(parentID,name )
VALUES (@parentID,@name )
比如dataset不是整体提交么。用户一次性。
那这个参数??怎么处理的呢?
---------------------------------
插入或者修改了多条记录,在执行DataAdapter的Update方法时会多次执行InsertCommand 或者UpdateCommand
参数值是受影响的那一行的数据
2.在DataAdapter.Update的时候不需要去你去处理@parentID,@name 这些参数
2.DataAdapter.Update的一般INSERT工作机制是把DataTable里面所有RowState=Added 的行去INSERT ,会把这些行的字段值分别加入到参数里面。一行一行的INSERT