CODBCFieldInfo fieldinfo;
int iColNum=pSet->GetODBCFieldCount();
SWORD sType;
//得到原有的表的字段信息
for(int i=0;i<iColNum;i++)
{
pSet->GetODBCFieldInfo( (short)i, fieldinfo );
csCol[i]=fieldinfo.m_strName;
sType=fieldinfo.m_nSQLType;
}问题是:如何创建新表时用上原有的表的字段类型?//下面只是一个固定的创建表的示例
CString sqlCreateT;
sqlCreateT.Format("CREATE TABLE T_DATA_OUT(ID VARCHAR2(20) NOT NULL,NAME VARCHAR2(40))");
m_pbase.ExecuteSQL(sqlCreateT);
int iColNum=pSet->GetODBCFieldCount();
SWORD sType;
//得到原有的表的字段信息
for(int i=0;i<iColNum;i++)
{
pSet->GetODBCFieldInfo( (short)i, fieldinfo );
csCol[i]=fieldinfo.m_strName;
sType=fieldinfo.m_nSQLType;
}问题是:如何创建新表时用上原有的表的字段类型?//下面只是一个固定的创建表的示例
CString sqlCreateT;
sqlCreateT.Format("CREATE TABLE T_DATA_OUT(ID VARCHAR2(20) NOT NULL,NAME VARCHAR2(40))");
m_pbase.ExecuteSQL(sqlCreateT);
解决方案 »
- 关于文件的问题
- vc 复杂结构串行化的存储问题
- 笨蛋提问,关于已知 sin值,如何知道角度的问题
- 2009-10-31(周六) 20:00有免费课
- 高分求解,怎样通过CMarkup类,生成如下XML文件的使用方法,求写出代码,谢谢
- 一个钩子的问题,分不够可以加
- VC6.0中能调用.NET版本的DLL?
- vc需要整顿请大家多提意见
- 寻兼职程序员,开发一个的屏幕取词工具软件
- 有人能在线教我用VC吗?¥100/1小时1天!!!!!!!!
- 子窗口的无效是否会引起父窗口的重绘,父窗口的无效是否会引起子窗口的重绘,还有类似的几个问题,进来看
- 在VC中如何得到SQL语句:select sysdate from dual的执行结果
在语句
sqlCreateT.Format("CREATE TABLE T_DATA_OUT(ID VARCHAR2(20) NOT NULL,NAME VARCHAR2(40))");
中不是要把fieldinfo.m_nSQLType转化为它所代表的类型名称吗?
不然怎么形成sql语句?
请指教!
SQL_TINYINT 相当于sql中的tinyint简单的方法:就是在一个数据库表中建立所有SQL认可的数据类型,然后使用VC6向导建立一个ODBC程序,选取刚才建立的表,在各个字段变量中就可以看出各个类型对应的是什么类型了C类型有以下一些switch(fieldinfo.m_nSQLType)
{
case SQL_UNKNOWN_TYPE:
case SQL_CHAR:
case SQL_NUMERIC:
case SQL_DECIMAL:
case SQL_VARCHAR:
case SQL_BIGINT:
case SQL_LONGVARCHAR:
pValue1 = new CString;
*pValue1 = "";
pList->AddNode(pValue1,BIND_SQL_TEXT);
break;
case SQL_INTEGER:
pValue2 = new long;
*pValue2 = 0;
pList->AddNode(pValue2,BIND_SQL_LONG);
break; case SQL_SMALLINT:
pValue3 = new int;
*pValue3 = 0;
pList->AddNode(pValue3,BIND_SQL_INT);
break; case SQL_FLOAT:
pValue4 = new double;
*pValue4 = 0.0;
pList->AddNode(pValue4,BIND_SQL_DOUBLE);
break; case SQL_REAL:
case SQL_DOUBLE:
pValue5 = new float;
*pValue5 = 0.0;
pList->AddNode(pValue5,BIND_SQL_FLOAT);
break; case SQL_DATE:
case SQL_TIME:
case SQL_TIMESTAMP:
pValue6 = new CTime;
*pValue6 = CTime();
pList->AddNode(pValue6,BIND_SQL_DATE);
break; case SQL_BINARY:
case SQL_VARBINARY:
pValue7 = new CByteArray;
pList->AddNode(pValue7,BIND_SQL_BINARY);
break;
case SQL_LONGVARBINARY:
pValue8 = new CLongBinary;
pList->AddNode(pValue8,BIND_SQL_LONGBINARY);
break;
case SQL_TINYINT:
pValue9 = new unsigned char;
pList->AddNode(pValue9,BIND_SQL_BYTE);
break; case SQL_BIT:
pValue3 = new int;
pList->AddNode(pValue3,BIND_SQL_BOOL);
break; default:
ASSERT(FALSE);
break;
}