这个是我要读取的数据表结构
CREATE TABLE [dbo].[TakeStock] (
[Sort] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Model] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Unit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Quantity] [int] NULL ,
[ActualQuantity] [int] NULL ,
[WriteDate] [datetime] NULL ,
) ON [PRIMARY]
GO
------------------------------------------------------------------------------------
我使用oleDbDataAdapter读取的时候,只能生成Insert和Select语句!UPdate和Delete语句提示说:“未能指定唯一标识"TakeStock"的行的列”,导致我不能使用oleDbDataAdapter.Update(Dataset)一使用就提示:当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。
应该如何解决这个问题?谢谢
CREATE TABLE [dbo].[TakeStock] (
[Sort] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Model] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Unit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Quantity] [int] NULL ,
[ActualQuantity] [int] NULL ,
[WriteDate] [datetime] NULL ,
) ON [PRIMARY]
GO
------------------------------------------------------------------------------------
我使用oleDbDataAdapter读取的时候,只能生成Insert和Select语句!UPdate和Delete语句提示说:“未能指定唯一标识"TakeStock"的行的列”,导致我不能使用oleDbDataAdapter.Update(Dataset)一使用就提示:当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。
应该如何解决这个问题?谢谢
{
if (sSelectCmd.Length==0)
throw new Exception("命令为空!");
try
{
LCOleDbConn();
System.Data.DataSet dsRet = new System.Data.DataSet();
OleDbDataAdapter sda = new OleDbDataAdapter();
OleDbCommand olecmdObj = new OleDbCommand();
olecmdObj.CommandText = sSelectCmd;
olecmdObj.CommandType = CommandType.Text;
olecmdObj.CommandTimeout = 600;//(单位为秒)10分钟,默认为30秒
olecmdObj.Connection = _dbConn; //OleDbCommandBuilder scb = new OleDbCommandBuilder(sda); sda.SelectCommand = olecmdObj;
//sda.MissingSchemaAction = MissingSchemaAction.AddWithKey;
LCOleDbConnConnDB();
sda.Fill(dsRet);
return dsRet;
}
catch(Exception excpt)
{
throw excpt;
}
finally
{
LCOleDbConnDisConnDB();
}
}
这个不需要主键