小弟于近日遇到项目紧急问题,急需解决,忘高手帮忙!代码如下: 其核心思想就是 通过odbc插入数据 但是表有自增主键 所以自增键会被自动忽略 只从第二个字段开始制定增加数据
但是程序需求需要将一行数据连同主键一起插入表中,也就是指定自增主键值。所以问题就来了!string connStr = "连接字符串";
string sql = "select * from hstlogheads"; DataTable dt = new DataTable();
OdbcDataAdapter da = new OdbcDataAdapter(sql, connStr);
da.FillSchema(dt, SchemaType.Source);
da.Fill(dt);
OdbcCommandBuilder sb = new OdbcCommandBuilder(da);
da.InsertCommand = sb.GetInsertCommand();
Console.WriteLine(da.InsertCommand.CommandText);
dt.Rows.Add(new object[] { 2200000, 22, null, null }); //就是220000 这一列 对应自增主键 但是会被自动忽略掉
da.Update(dt);
这样打印出的sql执行语句就是 insert into hstlogheads (从第二列开始的字段值) values(?,?,?···) 而我希望将自增主键指定插入紧急求救啊 !给支个招也行 在下不胜感激?
但是程序需求需要将一行数据连同主键一起插入表中,也就是指定自增主键值。所以问题就来了!string connStr = "连接字符串";
string sql = "select * from hstlogheads"; DataTable dt = new DataTable();
OdbcDataAdapter da = new OdbcDataAdapter(sql, connStr);
da.FillSchema(dt, SchemaType.Source);
da.Fill(dt);
OdbcCommandBuilder sb = new OdbcCommandBuilder(da);
da.InsertCommand = sb.GetInsertCommand();
Console.WriteLine(da.InsertCommand.CommandText);
dt.Rows.Add(new object[] { 2200000, 22, null, null }); //就是220000 这一列 对应自增主键 但是会被自动忽略掉
da.Update(dt);
这样打印出的sql执行语句就是 insert into hstlogheads (从第二列开始的字段值) values(?,?,?···) 而我希望将自增主键指定插入紧急求救啊 !给支个招也行 在下不胜感激?
解决方案 »
- vs2010 winform应用在windows7下无法创建测试证书
- c#截取域名
- C#如何计算当前系统运行了几年多少天
- 如何在桌面应用程序中打开网页 并登录
- SqlParameterCollection 中未包含带有 ParameterName“@LoginState”的 SqlParameter。
- 关于数据库模糊查询显示问题
- 奇怪的问题:页面内容显示不出来
- C# 无法引用System.Drawing.Drawing2D
- 如何用C#开发一个插件,用于vs.net的IDE里?
- 使用C#调用远程MQ的方法
- asp.net c#如何显示数据库中图片路径为图片?
- 在线急等,c# 打印自定义字体的宽度
SET IDENTITY_INSERT ON
insert into hstlogheads(2200000,22,null,null)
SET IDENTITY_INSERT OFF
SET IDENTITY_INSERT hstlogheads ON
insert into hstlogheads(2200000,22,null,null)
SET IDENTITY_INSERT hstlogheads OFF
我试过了 用DataColumn的AutoIncrement = false;
不好用啊 还是这样
string sql = @"SET IDENTITY_INSERT hstlogheads ON
insert into hstlogheads(2200000,22,null,null)
SET IDENTITY_INSERT hstlogheads OFF";
要么就不用.自己搞一个ID的申请和管理机制.我初学的时候用自增ID,后来发现很不方便.主要是自己不能管理和维护,另外在关联操作的时候,通常在Insert之前就知道当前的ID是多少,会很方便.
所以,后来就一直不用自增ID了,采用自己的ID申请和管理机制.
有关这方面,自己baidu查一下.一两句话,说不清楚.我这边主要是靠一张字段标识表利用时间戳去处理.
我用的数据库是DBmaster 这种语法估计不支持了
而且我的sql是用OdbcCommandBuider做出来的 唉!
大家都是好心人!!
insert into [test](sno,sname) values(1245,'asfd')
SET IDENTITY_INSERT [test] OFF
--(所影响的行数为 1 行)
而且我用的数据对于自增表 直接insert into 表名 就可以完成了 没有必要再用其他的注释问题在于如何通过CommandBuilder来生成这条sql语句
要求: 对有自增主键的表进行生成 而且在生成的Command的Parameters里面包含主键列