如何newid("tablename")使用Microsoft 的 OLE DB Provider for Visual Foxpro 9.0的主键插入 FoxPro 表?
我有两个表,一个主键的默认值是newid("tablename"),另一个表的数据类型设置为Integer (AutoInc)。
当我尝试insert在newid桌子上运行相同的命令时,我得到以下信息OleDbException:
Feature is not available
当我以主键insert在表上运行时Integer (AutoInc),它可以工作。
这是我试图执行的代码:
public void InsertData()
{
using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))
{
var insertStatement = @"INSERT INTO mytable (mycol) values (?)";
var insertCommand = new OleDbCommand(insertStatement, connectionHandler);
insertCommand.Parameters.Add("mycol", OleDbType.Char).Value="blue";
connectionHandler.Open();
insertCommand.ExecuteNonQuery();
connectionHandler.Close();
}
}
insert由于此newid()默认值,OLE 是否有任何原因无法执行?
解决我的问题的另一种情况是,如果我id在insert子句中手动指定了一个。前任:
var insertStatement = @"INSERT INTO mytable (id, mycol) values (?, ?)";
insertCommand.Parameters.Add("id", OleDbType.Integer).Value = 199;
insertCommand.Parameters.Add("mycol", OleDbType.Char).Value = "blue";
此外,我可以select * from tablename在这张桌子上运行 a 。
select 片段:
public DataTable GetData()
{
var myData = new DataTable();
using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))
{
var da = new OleDbDataAdapter();
var mySQL = "select * from mytable";
var myQuery = new OleDbCommand(mySQL, connectionHandler);
connectionHandler.Open();
da.SelectCommand = myQuery;
da.Fill(myData);
connectionHandler.Close();
}
return myData;
}
智慧大石
白板的微信
相关分类