游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2898|回复: 8

关SQLSERVER的Binary类型的加减法问题

[复制链接]

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2007-1-26 12:18:00 | 显示全部楼层 |阅读模式
  我现在的项目(是游戏)中有一系列数据(货物)用Binary类型保存在数据库中,比如说,游戏中有75项物资,我就用一个300字节的Binary类型保存起来,因为是二进制类型,所以我不确定使用加减法是否会出现异常,所以我现在使用的是这样的操作手段,先把数据从数据库中取出来(转成75个int类型),然后再修改数据(进行加减),然后再回传上去。
  想问一下有经验的人,使用update直接加减二进制数据,比如说在程序里面直接建立一个数组,里面存放着差值,然后用update set [X] = [X] + @X这样来更新会不会出问题?

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-1-26 12:27:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

不能执行的吧,你那个Update

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2007-1-26 12:30:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

        // 更新城市的商品
        public void UpdateCityGoods(Goods goods)
        {
                // 初始化连接
                SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DSN"]);
                connection.Open();

                // 初始化命令
                string cmd = string.Format("update [City] set [Goods] = @Goods where [ID] = '{0}'", CityID);
                SqlCommand command = new SqlCommand(cmd, connection);

                // 参数:商品
                command.Parameters.AddWithValue("@Goods", goods.GetBytes());

                // 执行查询
                command.ExecuteNonQuery();

        // 关闭连接
        connection.Close();
        }

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2007-1-26 12:31:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

        public byte[] GetBytes()
        {
                // 建立byte数组
                byte[] bytes = new byte[goods.Length * 4];

                // 遍历int数组
                for (int i = 0;i < goods.Length;++i)
                {
                        // 将int类型转化成byte数组
                        byte[] cvt = BitConverter.GetBytes(goods);
                        // 拷贝到byte数组中
                        Array.Copy(cvt, 0, bytes, i * 4, 4);
                }

                return bytes;
        }

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-1-26 13:43:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

试过这样的SQL语句能执行么

不过SQL Server确实支持一些很古怪的功能

即使能行的话,结果也不会,进位不正常吧

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2007-1-26 14:19:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

我在程序中使用了update set [X] = [X] + @X这样的语句,但是会报异常:二进制被截断(原话记不清楚了,反正是这个意思)。是不是从技术上来说这就是不能实现的啊?

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-1-26 15:39:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

两个任意长的Binary估计是不能加的,估计最长64位的能加

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-1-26 19:03:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

顶啦

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
 楼主| 发表于 2007-1-27 16:33:00 | 显示全部楼层

Re:关SQLSERVER的Binary类型的加减法问题

我直接在查询分析器里面使用语句又可以,比如说
update [K] set [X] = [X] + 0x11111111
是不是长度的问题呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 08:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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