为什么用ADOX创建ACCESS数据库及表正常,但有时不能为表添加主键?

qkqlqq0288 2010-01-09 04:19:19
如题,在开发的机器上没任何问题,但打包安装到客户的机器上,就出现问题了,但并不是所有的机器都会出问题?请高人指教!!
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qkqlqq0288 2010-01-09
  • 打赏
  • 举报
回复
下面是我的代码,createtl是创建表,createkey是创建主键,不知那出错了?

using ADOX;
public bool createtl(string tlname,string fromtlname,string prkey)
{
try
{
using (OleDbConnection conn1 = new OleDbConnection(conn.connstr.connstring))
{
string strsql = "select * into " + tlname + " from " + fromtlname;
conn1.Open();
OleDbCommand mycomm = new OleDbCommand(strsql, conn1);
mycomm.ExecuteNonQuery();
//string strssql2 = "Alter table " + tlname + " add primary key [xjh]";
//OleDbCommand mycomm2 = new OleDbCommand(strsql, conn1);
//mycomm2.ExecuteNonQuery();
createkey(tlname,prkey);
//if (!havexxdmincxtj(tlname))
//{
// insetxxdm(tlname);
//}

}
}
catch (Exception e)
{
//MessageBox.Show(e.Message.ToString());
return false;

}

return true;
}
private void createkey(string tlname,string prkey)
{
ADOX.Catalog catalog = new Catalog();
ADODB.Connection cn = new ADODB.Connection();
cn.Open(jlsxjgl09.conn.connstr.connstring, null, null, -1);
catalog.ActiveConnection = cn;
ADOX.Table mytl;
mytl = catalog.Tables[tlname];


mytl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, prkey, "", "");

System.Runtime.InteropServices.Marshal.ReleaseComObject(mytl);
System.Runtime.InteropServices.Marshal.ReleaseComObject(catalog);
mytl = null;
catalog = null;

}
antony1029 2010-01-09
  • 打赏
  • 举报
回复
帮顶!!看是否权限的问题
tianliang1 2010-01-09
  • 打赏
  • 举报
回复
我觉得不是机器的问题吧,是不是你代码有问题。。。
还有是不是数据库版本问题。。。不同机器上。。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧