因为Access性能不足的问题,我决定将开发的Access数据库,升迁到 Ms sql server
1, 数据导入
打开企业管理器,建立一个新的数据库,然后点所有任务,导入数据
开头总是报错...后来发现,原来是Access数据库有密码的原因,虽然在导入的过程中填了密码,仍然不能导入.
后来撤销Access数据库的密码,就一切OK了
2, 数据库表的自增量字段的改变
Access的自增量字段,导入后就成了普通字段了,这时,要设计表,然后将这样的字段其改成"标志"就可以了.
3,数据连接方法的改变
我用的是 OleDb 类,即 OleDbDataAdapter OleDbConnection OleDbCommand 等
它的好处是,可以适应不同类型的数据库,你所要改变的,仅是连接串,
原来Access连接串是
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\evadb.mdb;Persist Security Info=True;Jet OLEDB:Database Password=kkdxm";
Mssql的连接串是
"Provider=SQLOLEDB.1;Password=mypass;Persist Security Info=False;User ID=sa;Initial Catalog=db_stat;Data Source=192.168.10.12";
4, 数据读取写入的改变
一个是日期型数据,Access的格式是 #2010-7-31# 来表示,而 mssql 则是使用单引号就可以了 '2010-7-31'
另外,一些函数,比如取当前时间的,有所不同.
还有,就是原来读出来的不锈钢转子泵数据是 short 型, 现在可能成了 int 型.
总之,Access 到 Mssql 的升迁还算顺利的.
这个问题被我想得很严重! 结果却是令人喜出望外的.
大家知道,VC写的程序,其控件,我们是可以通过 SendMessage来获取其中的内容,甚至修改其中的内容的.比如说 Edit 控件, ComboBox 控件
这次,大虾米碰到的是C#写的应用程序!我想控制它的组合框(comboBox)里显示的数据,删除其中不需要的几条.首先,用spy++一看,它的类名是 "WindowsForms10.COMBOBOX.app.0.378734a" 我晕啊!这个类名,我到哪去找资料啊!!
经过多方研究,发现这个只是一个纸老虎!它其实本质上还是ComboBox,只是换了一个古怪的名字而已.
下面是一些示例代码,我省掉了定位窗口的过程,直接放的是用SPY++看到的控件窗口句柄
HWND hWnd = (HWND)0x00030DA2;
//FindWindowEx("WindowsForms10.COMBOBOX.app.0.378734a"
int count= ::SendMessage(hWnd,CB_GETCOUNT,0,0); //获得组合框的字符串的条数
for(int i=0;i {
::SendMessage(hWnd, CB_SETTOPINDEX, i, 0);
::SendMessage(hWnd, CB_SETCURSEL, i, 0);
::SendMessage(hWnd, BM_CLICK, 0, 0);
}
::SendMessage(hWnd,CB_DELETESTRING,0,0); //这一句删除第一行数据
阅读(2746) | 评论(0) | 转发(0) |