关于在Access数据库中添加表的问题(模块中)

myriceme 2011-02-27 01:16:52
同样的代码在模块中和窗口载入代码中执行的效果不一样,在模块的“Sub main()”中不能给表添加记录,可是在窗口的“Form1_Load”事件中就能插入一条记录,请问这是怎么回事?

代码如下:


Dim MdbPassWord As String = "a"

If Dir(Application.StartupPath + "\User.mdb") = "" Then
Dim cat As Catalog = New Catalog()
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=User.mdb;Jet OLEDB:Database Password=" & MdbPassWord)

Dim Cn As ADODB.Connection = New ADODB.Connection '定义连接
Dim objTable As ADOX.Table = New ADOX.Table '定义新表

Cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=User.mdb;Jet OLEDB:Database Password=" & MdbPassWord) '链接到数据库
objTable.Name = "tbUser" '表命名

objTable.Columns.Append("UserName", , 10) '给表“tbUser” 创建一个新的字段,字段名“主键”

'创建并追加一个新的关键。注意:我们只是通过“PimaryKey_Field”作为主键源列。新键被追加到“测试项目表”的键集
objTable.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "UserName")

objTable.Columns.Append("Password", , 10)
objTable.Columns.Append("RealName", , 10)
objTable.Columns.Append("Mod1", , 3)
objTable.Columns.Append("Mod2", , 3)
objTable.Columns.Append("Memo", ADOX.DataTypeEnum.adLongVarWChar)

cat.Tables.Append(objTable) '把所有的新字段追加到表

objTable = Nothing
cat = Nothing
Cn.Close()
Cn = Nothing

Dim SQLString As String
Dim ConnTemp As String
ConnTemp = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=User.mdb;Jet OLEDB:Database Password=a"
SQLString = "INSERT INTO tbUser VALUES('SAdmin','113','超级管理员','读和写','读和写','具有所有权限')"

Dim oleconn As New OleDb.OleDbConnection(ConnTemp) '连接字符串变量“CONN”在主模块“PublicVar”中声明;
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLString, oleconn)
cmd.CommandType = CommandType.Text

If oleconn.State <> ConnectionState.Open Then '如果数据库没打开;
oleconn.Open() '打开数据库连接;
End If
cmd.ExecuteNonQuery() '执行SQL语句;
If oleconn.State <> ConnectionState.Closed Then '如果数据没关闭;
oleconn.Close() '关闭数据库连接;
End If
NewMdb = True

...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlongwuhui 2011-02-28
  • 打赏
  • 举报
回复
If Dir(Application.StartupPath + "\User.mdb") = "" Then 设置断点,看下Dir(Application.StartupPath + "\User.mdb") = "" 的条件是否能满足
myriceme 2011-02-27
  • 打赏
  • 举报
回复
wuyq11我能把程序发给你吗?
myriceme 2011-02-27
  • 打赏
  • 举报
回复
我在Sub main()上下了断点,调试时断点处的实芯红圈变成了空心红圈并有一个警告标志,鼠标放上去提示:
“当前不会命中断点。还没有为该文档加载任何符号”。
wuyq11 2011-02-27
  • 打赏
  • 举报
回复
单步看看,数据库路径

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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