vc+access+odbc下如何判断指定数据库中已存在kkk的表?
谢谢了!不能读取记录;在MSYSOBJESTS上没有读取数据权限,555555555555555...
谢谢了!
不能读取记录;在MSYSOBJESTS上没有读取数据权限,555555555555555 展开
不能读取记录;在MSYSOBJESTS上没有读取数据权限,555555555555555 展开
1个回答
展开全部
权限问题:(在要操作的Access库里进行设置)
1:设置访问权限
工具(Tools) -> 安全(security) -> 用户与组的权限(User and Group Permissions)
在对象名称(Object Name)中选定 MSysObjects ,然后权限中设置其权限(最好将所有的Permission都选择上)。
2:查看系统文件
工具(Tools) -> 选项(Option) -> 在View里选择上System objects
3:有什么问题再联系
前提条件:已经连接到数据源。
1:得到Access数据库的所有表名
strQuery = "SELECT MSysObjects.Name FROM MsysObjects WHERE (MSysObjects.Flags)=0 AND (MSysObjects.Type)=1 ORDER BY MSysObjects.Name";
2:得到SQL Server数据库的所有表名
strQuery = "select name from sysobjects where xtype='U'";
3:得到Oracle数据库的所有表名
strQuery = "select TABLE_NAME from dba_tables t where t.owner='TEST' AND NOT TABLE_NAME='PLAN_TABLE'";
你就用第一条SQL语句吧!
... ...
if(m_Recordset.IsOpen())
{
m_Recordset.Close();
}
m_Recordset.m_pDatabase = &m_database;
m_Recordset.Open(AFX_DB_USE_DEFAULT_TYPE, strQuery);
......
int counts = 0;
while(!m_Recordset.IsEOF())
{
CString str;
m_Recordset.GetFieldValue(temp, str);
TRACE("%s\n", str);
//将得到的表名插入到下拉列表框中
((CComboBox*)GetDlgItem(IDC_COMBO_TABLE))->InsertString(counts, (_bstr_t)str);
m_Recordset.MoveNext();
counts++;
}
......
这样可以得到所有的表,要确定库中是否有kkk这个表,则
例如:(将上面的代码改一下)
while(!m_Recordset.IsEOF())
{
int temp=0;
CString str, strTable;
strTable = "KKK";
m_Recordset.GetFieldValue(temp, str);
TRACE("%s\n", str);
if(str.Compare(strTable) == 0)
{
AfxMessageBox("哈哈,该库中有kkk这个表");
}
m_Recordset.MoveNext();
}
你试试!有什么问题,在给我回复!
权限问题:(在要操作的Access库里进行设置)
1:设置访问权限
工具(Tools) -> 安全(security) -> 用户与组的权限(User and Group Permissions)
在对象名称(Object Name)中选定 MSysObjects ,然后权限中设置其权限(最好将所有的Permission都选择上)。
2:查看系统文件
工具(Tools) -> 选项(Option) -> 在View里选择上System objects
3:有什么问题再联系
1:设置访问权限
工具(Tools) -> 安全(security) -> 用户与组的权限(User and Group Permissions)
在对象名称(Object Name)中选定 MSysObjects ,然后权限中设置其权限(最好将所有的Permission都选择上)。
2:查看系统文件
工具(Tools) -> 选项(Option) -> 在View里选择上System objects
3:有什么问题再联系
前提条件:已经连接到数据源。
1:得到Access数据库的所有表名
strQuery = "SELECT MSysObjects.Name FROM MsysObjects WHERE (MSysObjects.Flags)=0 AND (MSysObjects.Type)=1 ORDER BY MSysObjects.Name";
2:得到SQL Server数据库的所有表名
strQuery = "select name from sysobjects where xtype='U'";
3:得到Oracle数据库的所有表名
strQuery = "select TABLE_NAME from dba_tables t where t.owner='TEST' AND NOT TABLE_NAME='PLAN_TABLE'";
你就用第一条SQL语句吧!
... ...
if(m_Recordset.IsOpen())
{
m_Recordset.Close();
}
m_Recordset.m_pDatabase = &m_database;
m_Recordset.Open(AFX_DB_USE_DEFAULT_TYPE, strQuery);
......
int counts = 0;
while(!m_Recordset.IsEOF())
{
CString str;
m_Recordset.GetFieldValue(temp, str);
TRACE("%s\n", str);
//将得到的表名插入到下拉列表框中
((CComboBox*)GetDlgItem(IDC_COMBO_TABLE))->InsertString(counts, (_bstr_t)str);
m_Recordset.MoveNext();
counts++;
}
......
这样可以得到所有的表,要确定库中是否有kkk这个表,则
例如:(将上面的代码改一下)
while(!m_Recordset.IsEOF())
{
int temp=0;
CString str, strTable;
strTable = "KKK";
m_Recordset.GetFieldValue(temp, str);
TRACE("%s\n", str);
if(str.Compare(strTable) == 0)
{
AfxMessageBox("哈哈,该库中有kkk这个表");
}
m_Recordset.MoveNext();
}
你试试!有什么问题,在给我回复!
权限问题:(在要操作的Access库里进行设置)
1:设置访问权限
工具(Tools) -> 安全(security) -> 用户与组的权限(User and Group Permissions)
在对象名称(Object Name)中选定 MSysObjects ,然后权限中设置其权限(最好将所有的Permission都选择上)。
2:查看系统文件
工具(Tools) -> 选项(Option) -> 在View里选择上System objects
3:有什么问题再联系
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询