c#中用dataset更新数据库,但数据库表中有计算列,无法进行更新,求解。

c#中用dataset更新数据库,但数据库表中有计算列,无法进行更新,求解。,第1张

我自己一般不用dataset更新数据库的 如果你使用的数据库是SQL Server, 那么用的SqlDataAdapter的Update方法来更新数据库的数据的吧, 它是可以自己设定更新数据库的SQL语句的, 代码片段如下:

SqlDataAdapter sqlDa = null;

 

// 设置sqlDa

SqlCommand command = new SqlCommand(

        "UPDATE tbName SET column1 = @value1, column2 = @value2 WHERE keyColumn = @keyValue", connection);

// 设置command的参数与对应列, 根据实际修改类型, 列名

commandParametersAdd("@value1", SqlDbTypeNChar, 50, "column1");

SqlParameter parameter = commandParametersAdd("@keyValue", SqlDbTypeNChar, 10, "keyColumn");

parameterSourceVersion = DataRowVersionOriginal;

sqlDaUpdateCommand = command;

 

// sqlDa执行更新

所以, 只把需要更新的列放到更新语句中, 那个统计列不要放在里面, 就不会发生你所说的异常了

思路:根据字段a的内容拼查询字符串,然后用exec()去执行更新字段b,因为exec()只能执行一条sql,所以用游标逐条去执行

alter table table1 add b numeric(18,3)

DECLARE @zd varchar(200),@xiao varchar(200)

DECLARE test CURSOR FOR

select a from table1

OPEN test

FETCH NEXT FROM test into @zd

WHILE @@FETCH_STATUS = 0

BEGIN

set @xiao='update table1 set b = (select '+(select rtrim(a) from table1 where a=@zd)+')'+' where a='''+rtrim(@zd)+''''

exec (@xiao)

FETCH NEXT FROM test into @zd

end

CLOSE test

DEALLOCATE test

还有一个问题,就是如果a的值是5/10的话结果是0,不信你试试,要改成50/100才行,要不默认为整形的

可以用数组的形式进行存储修改与删除,当然这种做法的效率不高,不建议这样使用。

如下字段是团队(team),内容是,“蜜蜂团队|小张,小李,小毛,”

程序如下(从数据库读出来的部分就不写了,直接写如何写成数组吧。)

<%

team="蜜蜂团队"

tc1="小张"

tc2="小李"

tc3="小毛"

w_arr=team&"|"&tc1&","&tc2&","&tc3&","

'w_arr 已经是一个字符串了。写入数据库如下

w_sql="insert into [table](team) values('"&w_arr&"')"

connexecute(w_sql)

''''''''已经写入数据库了。格式为 "蜜蜂团队|小张,小李,小毛,"

'读取出来部分我就忽略了,主要是读数据库很简单的。假设读取后如下

arr_team=rs("team")

arr=split(arr_team,"|")

teamname=arr(0)

responsewrite("<form name=form1 method=post action=1asp />")

responsewrite("团队名字是:<input type=text name=teamname value='"&arr(0)&"' /><Br>")

responsewrite("团队成员如下:")

arr_team_cy=split(arr(1),",")

for i=0 to ubound(arr_team_cy)-1

'arr_team_cy(i) 就是每个成员的名字了,可以用个input框把他们给框住

%>

<input type=text name=tc<%=i%> value=<%=arr_team_cy(i)%> />

<%

next

%>

<input type=hidden name=id value=<%=rs("id")%> />

<input type=submit value=确定 />

</form>

''''''''''''''''''''''''''''''''''''''

'至于修改部分我就不写了,接着开始部分那样,在接受页面把字段数据转成字符串连接起来,写入数据库即可。唯一标示就是ID,将来删除数据时候也一样。

如果想删除字段内的成员,把该字段值写为空就行了。因为读的时候是数组循环的。程序会判断的。。。。

以上就是关于c#中用dataset更新数据库,但数据库表中有计算列,无法进行更新,求解。全部的内容,包括:c#中用dataset更新数据库,但数据库表中有计算列,无法进行更新,求解。、SQL字符字段中的公式计算、asp中,如何计算access数据库多个字段的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10181817.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存