⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 celebratetrendsdatastorage.txt

📁 本程序只要完成动态数据库的创建。在表的设计视图中
💻 TXT
字号:
1. #include   <afxdao.h>   //此头文件很重要
    
  CDaoDatabase   db;   
  db.Create(m_path);   
    
  CDaoTableDef   tbf(&db);     //创建数据库
    
  tbf.Create("UserInfor");   
  tbf.CreateField("User",dbText,20,dbVariableField);      //创建表
  tbf.CreateField("Password",dbLong,4,dbVariableField);   
  tbf.Append();   
  tbf.Close();   
    
  tbf.Create("Content");   
  tbf.CreateField("CategoryNo",dbLong,4,dbVariableField);   
  tbf.CreateField("Content",dbMemo,0,dbVariableField);   
  tbf.CreateField("Title",dbText,50,dbVariableField);   
  tbf.CreateField("SerialNo",dbLong,4,dbVariableField);   
  tbf.CreateField("CreateTime",dbDate,8,dbVariableField);   
  tbf.CreateField("ModifyTime",dbDate,8,dbVariableField);   
  tbf.Append();   
  tbf.Close();   
    
  tbf.Create("Category");   
  tbf.CreateField("CategoryName",dbText,50,dbVariableField);   
  tbf.CreateField("CategoryNo",dbLong,4,dbVariableField);   
  tbf.CreateField("ParentNo",dbLong,4,dbVariableField);   
  tbf.CreateField("IsPrivate",dbBoolean,1,dbVariableField);   
  tbf.Append();   
  tbf.Close();   

2.在头文件中添加
#pragma warning (disable: 4146)
#import "C:\Program Files\Common Files\System\ado\msadox.dll" 
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
#pragma warning (default: 4146)

在源文件中 
::CoInitialize(NULL);
CString strCommandLine = ::GetCommandLine();
int i;
int nLen = strCommandLine.GetLength();
for(i = nLen - 1; i >= 0; i--)
{
	CHAR a = strCommandLine.GetAt(i);
	if(a == '\\')
	{
	   break;
	}
}
strCommandLine.ReleaseBuffer(i + 1);
strCommandLine.Delete(0, 1);
strCommandLine+="数据库\\";                  得到要创建数据库的路径

HRESULT hr = S_OK;
CString strcnn(_T("Provider = Microsoft.JET.OLEDB.4.0;Data source = " +strCommandLine
          + " "+ m_Name +" .mdb"));
try
{
   ADOX::_CatalogPtr m_pCatalog = NULL;
   hr = m_pCatalog.CreateInstance(_uuidof(ADOX::Catalog));
   if(FAILED(hr))
   {
        AfxMessageBox("hr创建失败");
   }
   else
   {
        m_pCatalog->Create(_bstr_t(strcnn));   创建数据库
   }
}
catch(_com_error e)
{
   AfxMessageBox(e.Description());
}


//动态删除数据库中的所有表
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset = m_pConnection->OpenSchema(adSchemaTables);
while(!m_pRecordset->adoEOF)
{
    CString str ;
    str.Format("Drop Table  %d",i);
    ExecuteSQL(_bstr_t (str));			
    m_pRecordset->MoveNext();
    i++;
}
/////////////////////////////////////////////////////
string   sqlstr 
sqlstr= "CREATE   TABLE   [dbo].[bill]   ( 
[运营商]   [varchar]   (20)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[主叫]   [varchar]   (8)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[被叫]   [varchar]   (20)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[地区名称]   [varchar]   (20)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[种类]   [varchar]   (8)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[挂机时间]   [datetime]   NULL   , 
[时长]   [int]   NULL   , 
[服务费]   [decimal](10,   2)   NULL   , 
[话费]   [decimal](10,   2)   NULL   , 
[中继线]   [varchar]   (10)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[授权码]   [varchar]   (10)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[所用电话]   [varchar]   (8)   COLLATE   Chinese_PRC_CI_AS   NULL   , 
[折扣后话费]   [decimal](10,   2)   NULL   , 
[运营商费用]   [decimal](10,   2)   NULL   , 
[摘机时间]   [datetime]   NULL   , 
[行号]   [int]   IDENTITY   (1,   1)   NOT   NULL   
)   ON   [PRIMARY] " 
Execute   IMMEDIATE   :sqlstr; 


文本 nvarchar(n)

备注 ntext

数字(长整型) int

数字(整型) smallint

数字(单精度) real

数字(双精度) float

数字(字节) tinyint

货币 money

日期 smalldatetime

布尔 bit


附:转换成SQL的脚本。

ALTER TABLE tb ALTER COLUMN aa Byte 数字[字节] 
ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型] 
ALTER TABLE tb ALTER COLUMN aa Short 数字[整型] 
ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度 
ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度] 
ALTER TABLE tb ALTER COLUMN aa Currency 货币 
ALTER TABLE tb ALTER COLUMN aa Char 文本 
ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小 
ALTER TABLE tb ALTER COLUMN aa Binary 二进制 
ALTER TABLE tb ALTER COLUMN aa Counter 自动编号 
ALTER TABLE tb ALTER COLUMN aa Memo 备注 
ALTER TABLE tb ALTER COLUMN aa Time 日期/时间 


在表的设计视图中,每一个字段都有设计类型,Access允许九种数据类型:文本、备注、数值、日期/时间、货币、自动编号、是/否、OLE对象、超级链接、查询向导。 

 文本:这种类型允许最大255个字符或数字,Access默认的大小是50个字符,而且系统只保存输入到字段中的字符,而不保存文本字段中未用位置上的空字符。可以设置“字段大小”属性控制可输入的最大字符长度。
 备注:这种类型用来保存长度较长的文本及数字,它允许字段能够存储长达64000个字符的内容。但Access不能对备注字段进行排序或索引,却可以对文本字段进行排序和索引。在备注字段中虽然可以搜索文本,但却不如在有索引的文本字段中搜索得快。
 数字:这种字段类型可以用来存储进行算术计算的数字数据,用户还可以设置“字段大小”属性定义一个特定的数字类型,任何指定为数字数据类型的字型可以设置成“字节”、“整数”、“长整数”、“单精度数”、“双精度数”、“同步复制ID”、“小数”五种类型。在Access中通常默认为“双精度数”。 
日期/时间:这种类型是用来存储日期、时间或日期时间一起的,每个日期/时间字段需要8个字节来存储空间。 
 货币:这种类型是数字数据类型的特殊类型,等价于具有双精度属性的数字字段类型。向货币字段输入数据时,不必键入人民币符号和千位处的逗号,Access会自动显示人民币符号和逗号,并添加两位小数到货币字段。当小数部分多于两位时,Access会对数据进行四舍五入。精确度为小数点左方15位数及右方4位数。 
 自动编号:这种类型较为特殊,每次向表格添加新记录时,Access会自动插入唯一顺序或者随机编号,即在自动编号字段中指定某一数值。自动编号一旦被指定,就会永久地与记录连接。如果删除了表格中含有自动编号字段的一个记录后,Access并不会为表格自动编号字段重新编号。当添加某一记录时,Access不再使用已被删除的自动编号字段的数值,而是重新按递增的规律重新赋值。 
 是/否:这种字段是针对于某一字段中只包含两个不同的可选值而设立的字段,通过是/否数据类型的格式特性,用户可以对是/否字段进行选择。
 OLE对象:这个字段是指字段允许单独地“链接”或“嵌入”OLE对象。添加数据到OLE对象字段时,可以链接或嵌入Access表中的OLE对象是指在其他使用OLE协议程序创建的对象,例如WORD文档、EXCEL电子表格、图像、声音或其他二进制数据。OLE对象字段最大可为1GB,它主要受磁盘空间限制。 
 超级链接:这个字段主要是用来保存超级链接的,包含作为超级链接地址的文本或以文本形式存储的字符与数字的组合。当单击一个超级链接时,WEB浏览器或Access将根据超级链接地址到达指定的目标。超级链接最多可包含三部分:一是在字段或控件中显示的文本;二是到文件或页面的路径;三是在文件或页面中的地址。在这个字段或控件中插入超级链接地址最简单的方法就是在“插入”菜单中单击“超级链接”命令。 
 查阅向导:这个字段类型为用户提供了一个建立字段内容的列表,可以在列表中选择所列内容作为添入字段的内容。


CREATE TABLE 测试表 (
    文本255 VARCHAR NOT NULL, 
    文本20 VARCHAR(20) NOT NULL, 
    日期时间 DATETIME, 
    数字1 BYTE, 
    数字2 SMALLINT, 
    数字4 INTEGER, 
    布尔 BIT, 
    自动编号 COUNTER(10, 5) CONSTRAINT PK_TVIPLevel26 PRIMARY KEY, 
    小数 NUMERIC, 
    单精度 REAL, 
    双精度 FLOAT DEFAULT 0 NOT NULL, 
    备注 MEMO, 
    货币 CURRENCY, 
    OLE对象 IMAGE)

在Access的查询设计器中,该语句不能执行DEFAULT 0;
其中:COUNTER(10,5)表明初始值从10开始,每次递增5,如果没有(10,5),则是从1开始,每次递增1;
NUMERIC表示小数,可以用NUMERIC(18,2)指定有2位小数;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -