51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2218|回复: 4
打印 上一主题 下一主题

[原创] lr测试sql server数据库服务器问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-6 16:25:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目介绍:
1.模拟人员进行项目中所有图幅数据上传后,对应修改数据库服务器中相关表的状态(修改mapgrid表中state的状态,往datastate表中插入记录)。
2.对项目(projectID)进行了参数化。即通过模拟n个人上传n个项目中的数据的操作,查看数据库服务器的表现。

大家看看我写的代码是否能够达到以上两点要求,欢迎提意见,目前有2个问题:
1. 在场景运行时,总出现违反在插入datastate表时报primary key 约束问题,为了解决这个问题,我写了delete sql语句,并且参数化了project表中的projectid,但是在场景运行时,还总出现违反在插入datastate表时报primary key 约束问题。
     参数化原因:datastate表中Mapid 和 Layerid 分别与两个表Mapgrid 中的ID和Layer中的ID相对应,均是两个表的主键。
而Mapgrid中的ID又与该表中的ProjectID相关。即可能一个ProjectID对应n个Mapgrid表中的n个ID.
所以我参数化了Projectid。
其思想主要是:为了达到模拟n个虚拟用户,同时上传n个project中的m个图幅数据(MapID).
2. 在生成测试报告时,总报错,报错问题如图:,这个问题,有知道的解决方案的,请也说一下

                            lr.log("Create new Copmmand");
                        String connectionString_1000;
                        connectionString_1000 = "Data Source=192.168.11.172;Initial Catalog= EPMS_0714 ;User ID=sa";
                        SqlConnection SqlConnection_1000 = new SqlConnection(connectionString_1000);
                        SqlConnection_1000.Open();
                        SqlCommand SqlCommand_500 = new SqlCommand();
                        SqlCommand_500.Connection = SqlConnection_1000;
                        SqlCommand_500.CommandType = CommandType.Text;

                        //lr.log("查询MapGrid中ProjectID为"+lr.eval_string("752")+"的MapID");
                        SqlCommand_500.CommandText = "select ID from MapGrid where ProjectID =" + lr.eval_string("{NewParam}") + "";                        
            List<int> mapids = new List<int>();
                        List<int> layerids = new List<int>();
                        SqlDataReader reader = SqlCommand_500.ExecuteReader();

                        while (reader.Read())
                    {
                                int ID11 = (int)reader[0];
                                mapids.Add(ID11);               
                        }
                        reader.Close();
        
           lr.start_transaction("delete");
          // lr.log("删除DataState中ProjectID为"+lr.eval_string("752")+"中的MapID的记录");
                        for (int i=0; i<mapids.Count; ++i)
                    {
                                int IDmap = mapids;                        
                                SqlCommand_500.CommandText = "DELETE FROM DataState where MapID=" + IDmap.ToString();
                    SqlCommand_500.ExecuteNonQuery();
                        }               
              lr.end_transaction("delete", lr.AUTO);

                        SqlCommand_500.CommandText = "select ID from Layer ";
                        reader = SqlCommand_500.ExecuteReader();
                        while (reader.Read())
                    {
                                int ID11 = (int)reader[0];
                                layerids.Add(ID11);        
                        }         
                        reader.Close();

                lr.rendezvous("insert");
                lr.start_transaction("insert");
                        //lr.log("插入DataState中ProjectID为"+lr.eval_string("752")+"的MapID");
                        string sSQL = "INSERT INTO DataState(MapID, LayerID) values(";
                        string sTemp;

                        for (int i=0; i<mapids.Count; ++i)
                    {
                                int IDmap = mapids;                        
                                for(int j=0; j<layerids.Count; ++j)
                                {
                                        int IDLayer = layerids[j];
                    sTemp = sSQL + IDmap.ToString() + "," + IDLayer.ToString() + ")";                                       
                    SqlCommand_500.CommandText = sTemp;
                                        SqlCommand_500.ExecuteNonQuery();
                                }
                        }
        lr.end_transaction("insert", lr.AUTO);        

        lr.start_transaction("update");
            // lr.log("更新DataState中ProjectID为"+lr.eval_string("752")+"的State状态");
               for (int i=0; i<mapids.Count; ++i)
                    {
                                int IDmap = mapids;                        
                                SqlCommand_500.CommandText = "UPDATE MapGrid SET State='Uploaded' where ID=" + IDmap.ToString();
                    SqlCommand_500.ExecuteNonQuery();
                        }

        lr.end_transaction("update", lr.AUTO);  
                                  SqlConnection_1000.Close();
                   SqlConnection_1000.Dispose();

[ 本帖最后由 zhuxiaoyan003 于 2010-1-6 16:28 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-1-6 17:11:40 | 只看该作者
希望大家帮帮忙啊……不要总飘过
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-1-7 08:38:22 | 只看该作者
看的人多,回的人没有
是我写的不清楚还是各位也无法解决呢?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-1-21 17:15:46 | 只看该作者
终于解决了参数化的问题
将select next row 设为unique,update value on 设置为 each iteration when out of value 设置为continue in a cyclic manner
就能在场景中跑过去了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-1-21 17:16:54 | 只看该作者
可是生成结果的错误还没解决。不知道怎么回事
如果我研究出来了,会再写上来
如果有知道的,麻烦指点一下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-2 11:56 , Processed in 0.082375 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表