`
yangshen998
  • 浏览: 1250080 次
文章分类
社区版块
存档分类
最新评论

工作学习笔记——近期的几个技术问题

 
阅读更多

一、BREW Mod调子Mod函数,dll调dll

前几天和同事关于BREW Mod调函数,dll调dll这两个事打了赌,结果我都赌赢了:)

如果明白了BREW Applet的启动工程,这两个事情其实是很简单的。利用Mod调Mod,把子Mod中的函数指针返回给父Mod,父Mod就可以调用子Mod中的函数了。利用函数名字符串调用子Mod中的函数,同理也可以办到。

dll调dll更没有难度,毕竟BREW Applet本身就是个被模拟器调用的dll。在Applet中正常的写调用Win32 dll的代码就可以了。

二、C#导入导出Excel

策划强烈要求在游戏的表格编辑器中加入这项功能。查阅了网上的资料,还是颇费了一番功夫。

a.导入Excel

使用OleDb接口,将Excel视做数据库,就可以操纵Excel里的数据了。我将Excel读入到DataTable中,可惜没有找到直接将DataTable更新到数据库或者另一个DataTable中的方法(使用DataTable的Merge方法,好像会有一些数据类型转换上的问题),而是一条记录一条记录更新的。

要是有SQL语句可以直接将一个数据库中的表导入到另外一个数据库就更好了。SQL不熟,应该有这种可能。

b.导出Excel

如果源数据库是ACCESS就好说了,一条语句搞定

"SELECT * INTO [C:/temp/data source.xls].[Sheet2] FROM TableName"

可惜我们的源数据库还可能是SQL SERVER。应该是SQL SERVER的数据库驱动不支持上面的这种写法。结果只好使用Microsoft.Office.Interop.Excel这里的类和接口来建立Excel文件,一个单元格一个单元格的导出数据。这样要求机器上必须安装Excel程序。

因为Excel表不像数据库,不会记录每一列的类型。它实际上是靠一些记录来推测列的数据类型的。实际应用中还可能碰到各种问题。

http://www.xtremevbtalk.com/showthread.php?p=969622#post969622

这个网页算是总结.Net的Excel操作比较全的地方。

三、DataGridView控件的一些使用技巧

我们工具的表格使用的是DataGridView控件。策划要求一些效果

a.列宽容易调整

设置AutoSizeColumnsMode即可,值为Fill的话会填充满整个窗体,但是没有水平滚动条,手动调整的话不是很容易。我最后用的是AllCells方式,列狂自动设为显示全所有单元格,这样就没有必要手动调整了。但是这种模式下看后边列的时候,因为滚动条,可能就看不到开始的几列了,也不容易快速确定某个单元格是不是在当前行上。这就引出了下一格需求。

b.可以方便的知道当前编辑的是哪一行

我们表格的第一列是名称,通过这一列可以确认一行数据。我将DataGridView.Rows的HeaderCell.Value值设为名称列的值,相当于行的标题。而行的标题,无论滚动条如何滚动,都是会显示在屏幕上的。注意单击一列排序时,控件的行标题值会丢失,需要在Sorted事件中重新填入。

另外我在dataGridView.CellEnter事件中改变了当前行的颜色,这样用户就能快速确定当前编辑的单元格属于哪一行了。

c.某些列的单元格可以用下拉列表来操作。

可以使用DataGridViewComboBoxColumn列类型,但是需要手动替换普通列,使用起来比较麻烦。我是在DataGridView控件中加进一个comboBox控件,平常隐藏起来。编辑需要下拉框的菜单时,将这个comboBox放置到当前单元格上来完成的。

四、使用SQL语句去掉数据库中某个表某一列的自动增长(标识列)属性

ACCESS数据库中,自动增长和整数型是两种不同的数据类型,直接使用ALTER语句将自动增长类型修改为整数类型即可

ALTER TABLE TableName ALTER COLUMN columnName INT NOT NULL

如果是SQL SERVER数据库,标识属性是区别于数据类型的另外一种属性,不能用上面的方法。需要靠备份标识列到普通整数列,删除标识列,再将普通整数列改名的方式来完成。注意标识列一般也是主键列,需要先去掉主键属性才能删除。在网上能搜到SQL SERVER主键属性的检查和增删方法。

分享到:
评论

相关推荐

    c#学习笔记——学习心得

    结构:一种值类型,几个数据组成的数据结构。向方法传递结构时,是通过传值方式传递的,结构实例化可以不用new,结构可以声明构造函数,但必须带参数,且声明的构造函数是用来对成员初始化的,必须包含每个字段。...

    FPGA自学笔记——设计与验证VIP版.pdf

    换成了 SOC 大赛,软核变硬核,性能翻几番。 那个时候,能出一本认认真真讲 FPGA 设计的 书, 会得到非常高的评价。 而我,则由于工作变动, 中间拖沓了半年,当半年后再来准备动 笔时,才恍然领悟到, Altera 即将...

    ATL——com学习笔记

    9 、几个有用的 ANSI C 和 VC++ 预定义宏 10 、如何在自己的程序中使用脚本语言? 11 、如何在基于 CHtmlView 的程序中使用 HTML 事件映射? 12 、如何得到 Web 页面中的 COM 组件的原始接口? 13 、如何生成...

    SQL学习笔记——表结构转换查询

    --随机插入几个记录 insert into sc values('张三','语文',98), ('张三','数学',89), ('张三','英语',91), ('李四','语文',88), ('李四','数学',97), ('李四','英语',99); --查看sc表信息 select * from sc order ...

    Python学习笔记——Numpy数组的排序和搜索

    先构建一个一维数组 a(元素随机输入) 用sort函数进行排序,默认升序 需要降序排列的可以用下面方法 利用argsort函数则可以返回数组a中元素从小到大排列的索引值 二维数组 构建一个二维数组 t(元素随机输入) ...

    深度学习(基于Tensorflow2.0)学习笔记——Day4

    这也就引出了我们接下来学习的内容: 数据归一化处理 回调函数的作用 数据归一化处理 归一化大家都不陌生,简单的理解,它的作用就是把你需要用到的数据经过处理后(通过某种算法)将其限制在你所规定的范围内。那么...

    Android学习笔记——Menu介绍(一)

    背景: Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。 随着这种变化,Android app应该取消对传统6项菜单的依赖。...创建一个选项菜单:  重写onCreateOptionMenu()方法 @Overri

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题 面试题库 高吞吐低延迟Java应用的垃圾回收优化....

    深度学习的学习笔记.zip

    在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...

    Linux基础笔记——第一章

    Linux基础学习笔记整理 第一章 虚拟机安装 先下载VMware14 安装完成后下载镜像文件 根据自己需要下载相应的镜像版本 (给大家推荐个网站 ‘阿里云站点’ ) 安装过程中要注意一下内容 点击 sda 创建三个分区 要自己...

    进程同步——信号量机制

    关于信号量的文章,生产者消费者问题与读者写者问题---信号量机制,PV操作——进程同步的信号量问题,利用信号机制实现的 父子进程同步,嵌入式linux的学习笔记-进程间通信的信号与信号集(四)1)进程的同步与互斥 ...

    c#学习笔记.txt

    如前所述,我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为...

    整理机器学习,深度学习,自然语言处理,推荐系统相关的各种学习笔记.zip

    在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...

    基于TCPNS2模拟

    NS2 学习笔记(10)——各种TCP版本、TCP同步化现象及影响因素 NS2 学习笔记(10)——各种TCP版本、TCP同步化现象及影响因素 1、Destination (1)学习TCP的拥塞控制机制并了解TCP Tahoe、TCP Reno、TCP NewReno...

    生命太短暂,不如用Python。将Python用于机器学习、网络爬虫、图像处理,我的Python学习笔记!.zip

    在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...

    深度学习笔记(1)——感知机

    接触深度学习的第一个概念就是感知机,感知机是与门、或门的逻辑电路,是一种判别模型。常见的感知机分为与门、或门、非与门。 通过感知机,相当于是用一条直线将空间进行了划分。 二、几种感知机 1. 与门(and_gate...

    阅读笔记:00 |开篇词 掌握软件开发技术的第一性原理

    极客时间-后端技术基础详解-李智慧-阅读笔记第一性原理 —— 建立技术体系的起点如何创建我们的技术体系软件知识技术体系 计算机软件开发是一个日新月异的领域,几乎每天都有新技术产生,每隔几年就会进行一次大的...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题库 高吞吐低延迟Java应用的垃圾回收优化.docx 黑马...

    机器学习和差分隐私的论文笔记和代码仓.zip

    在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...

Global site tag (gtag.js) - Google Analytics