当前位置: 代码迷 >> C# >> C#向sql数据库写数据的有关问题
  详细解决方案

C#向sql数据库写数据的有关问题

热度:101   发布时间:2016-05-05 02:34:23.0
C#向sql数据库写数据的问题
C#向sql数据库写数据,数据表中有100行,但是我只需向前50行写数据,怎么实现呢,用Insert into login values写的话,提示“列名或所提供值的数目与表定义不匹配。”,求解决方法!
------解决思路----------------------
不好意思,没输完:
如果是有100个列,向前50个列插入数据,可以类型这样: 
INSERT INTO TABLENAME(Field1, Field2.....) VALUES(value1, value2...)
只要把你要插入数据的字段写出来就可以了。
------解决思路----------------------
先说一声,数据库的基本单位是一个元组(即一条记录),而元组本身是无序的。所以不存在前50行,后50行这东西,因为这样的操作并没有什么意义。
在SELECT查询时,指定order by排序方式(或者使用默认排序方式),那样才是有序。

建议你:
创建一个对象,给需要的属性赋值,其他属性默认,然后保存整个对象到数据库。
insert语句提供50个字段,反正我看晕了~说不定下周要改成80个呢~
------解决思路----------------------
行还是列表示傻傻的分不清楚。
1.如果是数据存在100行,那么我想你应该是需要更新数据的,需要用update操作,根据主键
2.如果是100列,插入一行记录,那就自己拼接sql语句,insert into table(column1,column2,....) values(value1,value2,...)
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

先说一声,数据库的基本单位是一个元组(即一条记录),而元组本身是无序的。所以不存在前50行,后50行这东西,因为这样的操作并没有什么意义。
在SELECT查询时,指定order by排序方式(或者使用默认排序方式),那样才是有序。

建议你:
创建一个对象,给需要的属性赋值,其他属性默认,然后保存整个对象到数据库。
insert语句提供50个字段,反正我看晕了~说不定下周要改成80个呢~

嗯,但是我是按最多的对象创建的表,我对需要改变的赋值了,不需要的就没有赋值,执行时报错“列名或所提供值的数目与表定义不匹配“

把你的sql语句贴出来吧.


假如表有100个字段,那
insert(field1,field1,...,field100) values("1","2',..."50","",...,"")

必须有100个字段,而没有值得字段可以赋值为空。不能只有50个字段。

我觉得你还是改一下,创建一个对象,然后调用object.save();方法吧。在save方法中调用insert语句,对全部字段进行一次赋值。即上面的insert语句。


------解决思路----------------------
楼主这个自己都没有表达清楚:
1、如果楼主是按一个“表”的数据行,来更新另一个表的前“50”行的话
 答:需要两个表之前必须有一个对应字段来进行更新,语句则是
for(int i=0,i<50,i++)
{
Update 表1 set  表1.字段=表2.字段 from 表1 left join 表2 on 表2.对应字段=表1.对应字段  
}
2、如果楼主是想一个表的50行数据插入到另一个表中,语句是:
for(int i=0,i<50,i++)
{
insert(field1,.....) values("1",.....)
}
3、如果是插入的数据行“列名或所提供值的数目与表定义不匹“
这是数据例不对,或数据类型不对。
把需要插入的值类型都改成"varchar"?
4、如果是一个表中的数据“列”,插入到另一个表的“行”
那个在插入的时候转化为DataRow进行每一行取值,进行insert
  相关解决方案