程序人生

不甘寂寞^_^
posts - 2, comments - 2, trackbacks - 0, articles - 4
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2012年2月15日

一、创建"概念数据模型"-CDM(Conceptual Data Model) 
(1)打开PowerDesigner,点击File(文件)->New(新建) 
(2)选择Conceptual Data Model,并修改Model name(模型名). 
(3)在Palette工具栏中点击Entity(实体)工具,并在工作区中建立Entity
(4)双击一个Entity.在弹出的Entity Properties中输入Name,Code.其中Name是在显示时使用的名称,而Code是在代码中使用的名称. 
注:修改name的内容,code也跟着变化,如何让code不随着name变化,Name和Code 的右侧都有一个按钮“=”,如果需要不同步的话,把这个按钮弹起来就可以了。
Tools(工具)->General Options(常规)->Dialog(对话)->Name to Code Mirroring(名字编码映射) 去掉
    
    
(5)点击Attributes(属性),建立相应的属性:Name:显示名称,Code:代码名称,Data Type:数据类型,Length:数据长度,Precision:数据精度,M:必须的,P:主键,D:显示. 
注:允许字段同名,.默认不允许有相同字段 
Tools-->model options-->model settings(模型设置)-->Data Item(数据选项)-->unique code去勾则可
(6)选中主键列,点击工具列中的Create Identifier(标识符)按钮. 
(7)输入Name及Code,因为是主键列,所以选中Primary identifier. 
(8)建关系: 点击工具栏中的关系工具,在学生表Entity上点击并拖至成绩表Entity. 
           双击关系-->name关系描述/code约束名-->Detail(细节): 一对一,一对多, 多对多,多对一
(9)建约束:双击字段名-->Standard checks(标准检查)可设置最大值|最小值|默认值-->additional Checks(附加检查):可手写check约束
(10)检查是否有错 Tools-->check  model
注:删除未改名的字段,不然报错
二、根据CDM生成"物理数据模型"-PDM(Physical Data Model)
1.Tools-->generate  physical(产生物理模型)-->选择数据库类型,例sql  server 2000
注:a.不能改文件夹,必须是DBMS文件夹中
2.主外键设置:双击关系-->joins(连接)选择各表的主外键字段
3.建标识列:双击字段名 -->Genral-->identity前面加勾 
三、为特定DBMS创建数据库的SQL语句。
Data base-->generate  database(产生数据库)-->Director选择文件生成的位置
注:(1)可以通过修改模板(Database-Edit Current DataBase)改变脚本的格式。例如:
     Script-Objects-Column-Add的Value中开头增加一行“--%COLNNAME%”以便在脚本中显示列的中英文对照
    (2)由pdm生成建表脚本时,字段超过15字符就发生错误(oracle)
       打开PDM后Database-->Edit Current-->DBMS -script-objects-column-maxlen,把value值调大(原为 30),比如改成60。出现表或其它对象的长度也有这种错误都可以选择对应的objects照此种方法更改!
    (3)执行sql语句时,需先建数据库,因为该工具生成的脚本建表不建库。
       且脚本用的修改表,执行两次就OK了
四、利用已现有模块导出数据字典文件
(1)”数据字典模板”,并将它复制到安装目录的Resource Files\Report Templates文件夹中
(2)右击"PDM"-->新增-->report(报表)-->新建-->ReportName报表名,language语言(选择Simplified Chinese简体中文),report template报表模块(选择数据字典模板)-->编辑或直接使用使用该模板
(3)选择report工具栏中-->Generate Html生成HTML字典| Generate RTF生成DOC字典
注:修改报表模板中一些术语的定义
即文件:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
Tools-Resources-Report Languages-选择Chinese-单击Properties或双击目标
修改某些对象的名称:Object Attributes\Physical Data Model(物理数据模型)\Column\
        ForeignKey:外键
        Mandatory:为空
        Primary:主键
        Table:表
用查找替换,把“表格”替换成“表”
修改显示的内容为别的:Values Mapping\Lists\Standard,添加TRUE的转化列为是,FALSE的转化列为空
另外Report-Title Page里可以设置标题信息
五、根据已存在的数据库反向生成PDM,CDM及创建数据库的SQL脚本。
 
DataBase -->reverse Engineer DataBase(反转数据库) -->  Using an ODBC data source 
注:需要配置数据源。问:如何反向MYsql
    
如果报以下错误的解决方案:
Unable to list the users.
[Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句
SQLSTATE = 37000
解决方案:修改语法检查规范
步骤一:选择菜单栏中的Database -> Change Current DBMS ,给DBMS选择SQL Server2005。
步骤二:重新配置ODBC连接,取消"更改默认的数据库为"选择。
步骤三:从PD里选择File -> Reverse Engineer -> Database 
步骤四:选择数据库,选择表,OK,大功造成。

posted @ 2012-02-15 21:18 阿星 阅读(4951) | 评论 (0)编辑 收藏

2012年2月13日

         作为一个程序员所操作的数据库肯定不至一两个,在这个项目可能用这个数据库。换下一个项目可能数据库也跟着换了,虽然接触的数据库很多,但我们可能并不是对每一个数据库都能操作自如。有时对一些特殊的数据进行批量修改或更新时,没有在自己熟悉的数据库上操作自如,因此我们会想到将数据导出至我们熟练的数据库中修改好之后再将其导入。

        下面以Access和Oralce为例,跟大家简单介绍下导入导出过程:1、Access

1、将Access中的数据导出到Orcale:

  1>用Access打开要导出的数据库

   2>按下图操作:

















2、修改数据,这个过程省略,因为各有所需...

3、将修改好的数据导入:











如以上图操作两数据库的导入导出应该没有问题啦...


posted @ 2012-02-13 22:57 阿星 阅读(442) | 评论 (0)编辑 收藏

2012年2月10日

以下是本人在使用MyEclipse工具的一些心得,希望对大家有用!

1. 修改MyEclipse开启页面图标
  a、首先找到这个图片:
  我的目录是:D:\Program Files\MyEclipse 6.5\myeclipse\eclipse\splash.bmp
  注意6.0以前版本文件名也所不同,其实只要随便找一个bmp的文件,也可以,
  用画图打开,然后写上自己的大名.....
  b、找到eclipse目录的eclipse.ini
   最后面加一句:-Dosgi.splashLocation=图片路径,即可。


2、修改MyEclipse中的快捷键:
     Window---->Preferences---->搜索[key]找到keys页面---->做相应修改
      content Assist   ----  Alt+/


3.让MyEclipse飞起来:
   a、Window---->Preferences---->搜索[mav]找到Maven页面----->将该页面的勾全去掉
   b、...搜索[star]找到Startup and Shutdown页面---->可去掉90%的选项


4、修改jsp页面默认编码格式:
    Window---->Preferences---->搜索[jsp]找到JSP页面---->Encoding:选择UTF-8


5、修改MyEclipse的默认端口:
    a、Window---->Preferences---->搜索[tom]--->MyEclipse Tomcat--->8088[自带tomcat]
       如果是Tomcat 6.0或其它版本的要找到Tomcat的安装文件conf中的server.xml文件修改
       其中的端口号
    b、找到MyEclipse页面工具栏的【电脑图标】点击对其进行相应的修改,OK搞定....

posted @ 2012-02-10 22:23 阿星 阅读(854) | 评论 (0)编辑 收藏

正确安装RTX后,在以下目录下可以找到一个获取用户电话号码的cgi文件,

..\Tencent\RTXServer\WebRoot\GetMobile.cgi

调用方式:直接在浏览器中输入http:127.0.0.1:8012//GetMobile.cgi?receiver=username  

注:cgi方式调用默认端口是:8012

就可获取用户[username]在RTX中的电话号码。

要想获取邮箱则需要复制一份cgi文件,因为rtx中没有提供现在,只需复制GetMobile.cgi文件于同目录下,再做以下修改就OK咯

<?PHP

$receiver = $_GET["receiver"];

if (strlen($receiver) == 0)
{
$receiver = $_POST["receiver"];
}

$ObjApi= new COM("Rtxserver.rtxobj");
$objProp= new COM("Rtxserver.collection");
$Name = "USERMANAGER";
$ObjApi->Name = $Name;
$vName="";
$vValue="";
$objProp->Add("USERNAME", $receiver);
$objProp->Add("UINTYPE", "Account");

$Result = @$ObjApi->Call2(0x6, $objProp);

if(strcmp($nullstr, $errstr) == 0)
{

$Result->GetKeyValue(1, $vName, $vValue); //1:是取邮箱 5:是取电话号码

header("Ret Code: 0");
header("Ret String: 操作成功");
header("Mobile: ".strVal($vValue));
echo $vValue;
}
else
{
header("Ret Code: -1");
header("Ret String: ".$errstr);
echo $errstr;
}
?>

posted @ 2012-02-10 22:22 阿星 阅读(920) | 评论 (0)编辑 收藏

公司最近的一个项目有这样一个需求:就是通过java代码调用RTX提供的API向RTX发送消息,达到一种及时提醒的效果。

  让我对RTX有了一定的了解和认识:

  虽然RTX提供的API还比较丰富,但操作的过程中还是会碰到一些大大小小的问题。

      我所碰到的第一个问题就是数字账号无法发送消息的问题:

 

    public int sendNotice(RtxSendNoticeBean rtxb) {
    int iRet= -1;
    RTXSvrApi RtxsvrapiObj = new RTXSvrApi();   //RTX提供的API

    if( RtxsvrapiObj.Init()){ 
      RtxsvrapiObj.setServerIP(rtxb.getServerip()); //设置RTX服务器IP地址
      RtxsvrapiObj.setServerPort(rtxb.getServerprot()); //设置RTX服务器端口

      String szKey = RtxsvrapiObj.getSessionKey(rtxb.getRecivers());
      System.out.println("SessionKey:" + szKey);
      //API中的消息发送 功能    0:操作成功 非0:操作不成功  
      iRet = RtxsvrapiObj.sendNotify(rtxb.getRecivers(),rtxb.getTitle(),rtxb.getContent(), rtxb.getType(),rtxb.getDelarytime());
    }
    if (iRet == 0){
      System.out.println("发送成功");
    }else{
      System.out.println("发送失败");
    }
    RtxsvrapiObj.UnInit();
    return iRet;
   }

  使用以上代码,若RTX是非纯数字账号就没问题,可以发送。但如果是纯数字账号就没反应,经多处查找资料得处结果,这是RTX2011之前版本的bug。要想同时操作数字账号可以用以下两种方式解决:

  1、直接安装RTX2011SDK(若此方案可行就不用再做不第二步操作)

    下载文件:RTXS2011SDK(8.0.786.202).exe

   2、如果已安装2010SDK,又不想使用RTX2011版SDK,就需要做已下修改:

    a. 把RTXSSDK2010安装目录下的SDKAPIC.dllSDKAPI.dllSDKAPIJava.dll用RTX2011SDK中的进行覆盖。

    b. 再把SDKAPIC.dllSDKAPI.dllSDKAPIJava.dll拷贝去覆盖./windows/system32

    c. 用regsvr32 命令注册一下SDKAPI.dll文件。

   最后需要在RTX提供的API中添加一行代码:

 

  /**
  * 发送消息提醒
  * @param receivers String 接收人(多个接收人以逗号分隔)
  * @param title String 消息标题
  * @param msg String 消息内容
  * @param type String 0:普通消息 1:紧急消息
  * @param delayTime String 显示停留时间(毫秒) 0:为永久停留(用户关闭时才关闭)
  * @return int 0:操作成功 非0:操作不成功
  */
  public int sendNotify(String receivers,String title,String msg, String type,String delayTime) {

    svrInit(OBJNAME_RTXEXT);

    AddProperty(iProp, KEY_USERNAME, receivers);
    AddProperty(iProp, KEY_TITLE, title);
    AddProperty(iProp, KEY_MSGINFO, msg);
    AddProperty(iProp, KEY_TYPE, type);
    AddProperty(iProp, KEY_MSGID, "0");
    AddProperty(iProp, KEY_ASSISTANTTYPE, "0");
    AddProperty(iProp,KEY_UINTYPE,"Account");     // 如果设置KEY_UINTYPE 为Account,无论传进去是纯数字还是字符串,都认为是帐号。

 

    if(!"0".equals(delayTime))
      AddProperty(iProp, KEY_DELAYTIME, delayTime);

 

    iResult = Call(iObj, iProp, PRO_EXT_NOTIFY);
    innerCode = GetResultInnerCode(iResult);

    release();
    return innerCode;
  }

     这样改好这后,大功告成!

posted @ 2012-02-10 22:20 阿星 阅读(2440) | 评论 (2)编辑 收藏

   在上一遍中讲到,用java调用RTX的API实现发送消息的功能。经测试在Windows平台下tomcat上面是没问题的,可以实现想要的功能;但将代码部署至Linxu平台WAS下就行不通咯。因为这样写的代码是不能实现跨平台操作的,可我现在做的这个项目恰好是要发布在Linux平台中的WAS服务器上,所以之前的代码又得重新编写:

      要实现通过代码跨平台发送RTX消息可有以下两种方式:

      1、写一个中转程序,就是将写好的java调用代码封装成一个web应用程序。

      2、改用CGI方式发送RTX消息。

      我采用的是第二种方式,下面就为大家介绍下本人的操作过程:

第一步:RTX服务端IP授权

     1.用记事本打开System32下的rtxServerApi.ini文件,把Host改为RTX服务器的IP地址。

    2.进入RTX服务器安装目录../RTXServer下,用记事本打开SDKPorperty.xml文件,在里面增加开发机器地址(如下图所示),保存后重启RTX服务。

 

             

第二步:实现代码:

View Code

第三步:如果RTX账号中有纯数字账号还得做以下操作,不能数字账号还是不行

     找到RTXServer的安装目录..\Tencent\RTXServer\WebRoot\SendNotify.cgi红色部分为添加内容)

<?PHP
........
$Name = "ExtTools";
$ObjApi->Name = $Name;
$objProp->Add("UINTYPE", "Account"); //允许操作纯数字账号
$objProp->Add("msgInfo", $msg);
.............
?>


有兴趣的或正在开发此功能的朋友可以去实下,希望对你有所帮助.....

posted @ 2012-02-10 22:20 阿星 阅读(2892) | 评论 (0)编辑 收藏