月度归档:2012 年五月

C#操作MySQL数据库的简单例子[转]

本示例演示了用C#操作MySQL的方法,提供了三个可重用的类MySqlDBUtil,MySqlPageUtil,Page。
本示例由 C#操作Access数据库的简单例子(http://www.albertsong.com/read-56.html)修改而来。
1.首先下载MySQL数据库的.NET驱动

http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip/from/pick#mirrors

将bin目录里的MySql.Data.dll文件复制到工程目录,并且将dll的引用加入到项目中,这样就可以通过相关的类来操作MySQL数据库了。
using MySql.Data.MySqlClient;
using System.Data;
连接字符串:String connectionString = “server=127.0.0.1;user id=root; password=as; database=albertsong; pooling=false;charset=utf8″;
连接字符串中各个项目的意思是很明确的,需要注意的是charset应该设置成和数据库表的charset一致,否则可能出现中文乱码。
然后将整个项目中的OleDb用MySql替换,这样基本上就可以了。不同的是带参数的sql语句,
Access中是
string sql=”insert into product(name,quantity,price,sale_date,checked_flag)values(?,?,?,?,?)”;
parameters[0]=new MySqlParameter(“@name”,MySqlDbType.VarChar,100);
MySql中应改为
string sql=”insert into product(name,quantity,price,sale_date,checked_flag)values(?name,?quantity,?price,?sale_date,?checked_flag)”;
parameters[0]=new MySqlParameter(“?name”,MySqlDbType.VarChar,100);
2.取得MySQL自增标识字段在插入数据后的id值
cmd.CommandText = @”select @@identity”;
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
return value;
用cmd.CommandText = @”select LAST_INSERT_ID()”;结果一样,两者的区别没有研究。
3.分页查询
使用Limit子句来处理分页查询,这样相对于Access的分页查询,代码大量简化,效率也会提高。
代码这里下载MySqlDBUtilDemo.rar (198.41 KB , 下载:5159次)
本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。
运行前先利用bin\Release下的sql语句文件建表并修改MySqlDBUtil中的连接字符串。
本例程演示了:
1.MySQL数据库的插入,更新,修改,查询;
2.带参数的sql语句的使用,而不是拼SQL;
3.使用Limit子句的分页查询;
4.用事务同时执行多个SQL语句;
5.在插入数据的同时返回最新的ID值;
6.整型,实型,字符串,日期型,布尔型五种数据类型的操作;
7.使用正则表达式来验证整数和实数;
8.listview用来显示数据的一些基本用法。
本示例不包括:
1.完善的分页封装,只提供了分页的简单包装。
2.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。
3.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
后记:
由于API接口一致,将操作Access数据库的类改为操作MySQL数据库的类很容易,利用这两个示例,可以学习基本的数据库操作,也可以用来做一些简单的应用程序了。实际的项目中有成熟的开源项目可用,如iBATIS.NET和NHibernate,这些项目都建筑在这些基本的API之上,先学习我写的这两个小例子也有助于学习理解这些项目。

转自:http://www.albertsong.com/read-58.html

Windows XP 下使用 Git 小记 (二) TortoiseGit for WinXP

为保持本文的独立性,其中一些内容与“Windows XP 下使用 Git 小记 (一) with JGit/EGit” 中的内容相同。

一、安装必要客户端

1. TortoiseGit

http://tortoisegit.googlecode.com/files/TortoiseGit-1.0.2.0-32bit.msi

下载安装后,重启系统。

2. 安装 msysgit
a. 从 http://msysgit.googlecode.com/files/Git-1.6.2.1-preview20090322.exe 下载并安装;

3. JGit/EGit plug-in for Eclipse 3.5
a. 菜单 -> Help -> Install New Software -> “Add” Button;
b. “Add Site”
Name : jgit Location
Location : jgit – http://www.jgit.org/updates
选择最新版本(目前是 0.5.0.200908282229)安装之;
c. 重启 Eclipse
=============================================================================

二、在服务器上建立公共库 并提交第一个项目

说明中省略了在提示框填写密码的步骤。

1. ssh 到服务器,假设当前目录为你的帐户根目录;

2. 在服务器上建立公共库
$ mkdir gitdemo.git #仓库名称为 gitdemo.git
$ cd gitdemo.git
$ git –bare init –shared #建立裸库,且为 group 共享模式

刚刚创建的 Git 仓库是没有任何分支的,因此也没有 clone 的意义。
所以我们需要向新的仓库上传一些东西,以初始化仓库。

3. 管理员添加公共库的第一个项目
我将在 D:\ 目录下开始所有操作。
a. 建立本地 Git 仓库的文件夹 AndroidSpace
建议如没有特殊需要,此处不要在 Eclipse 的 workspace下建立仓库目录,
也不要将 workspace 作为仓库目录,否则会使得环境过于复杂,可能造成不必要的麻烦。
最好在与 workspace 同目录下建立仓库目录,例如 AndroidSpace。
也就是说 AndroidSpace 是本地的一个 Git Repository,同时也被当作是 Eclipse 的一个
工作空间,当然它并不是真正你设置的 workspace。

b. 进入 AndroidSpace 目录,右键点击显示菜单,选择 “Git create repository here”,
将会建立一个 .git 目录,此时 AndroidSpace 已经成为一个本地 Git 仓库。

c. 这里需要手动添加 “.gitignore 文件,以过滤不需要进行版本控制的文件。
方法:
在 AndroidSpace 仓库中新建一个文本文件,如叫 ignore.txt;
向其中添加需要过滤的文件名称的匹配字符,如:

*/bin/*
*/gen/*

添加完毕后保存关闭,在 cmd 窗口,执行以下命令:

D:\AndroidSpace>ren ignore.txt .gitignore

将 ignore.txt 改名为特定的 .gitignore 文件,直接 F2 重命名在 windows 是不允许的。

d. 此时使用 Eclipse 建立一个 Android 工程(你也可以用别的)。
注意将目录定位到 AndroidSpace中(你刚才创建的 Git 本地库)。

c. 此时,Test 项目文件夹及内部各文件都会标有一个大大的问号。
右键点 Test 项目 -> TortoiseGit -> Add… -> 确认要 add 的文件 -> OK;

d. 此时,Test 项目文件夹及内部不被过滤的文件都会标有一个大大的十字。
右键点 Test 项目 -> (Git commit -> “master”) -> 写 comment 以及确认要提交的文件 -> OK ->
完毕后有两个 button : Close 和 Push。
如果 Close 则直接关闭对话框。
如果 Push,则会弹出 Push 对话框,以便将当前分支同步到服务器公共库上。在对话框中填写:
Local:master | Remote:master
Destination: 如果是第一次配置,需要点击 Manage button,打开 Settings 对话框,
右侧面板中填写
Remote:origin | Url: username@server_ip:your_account_dir/gitdemo.git
拷贝一下Url。
点击 “Add New” -> 点击 “应用”。
回到Push对话框,此时 origin 并不会自动显示,你需要选择 Arbitray URL再次填写
一遍 刚才的 Url(下次打开时就会有 origin) 了。
点击“OK”,push 操作完成。
(你也可以 右键点 Test 项目 -> TortoiseGit -> Push… 打开Push对话框。)
此时,Test 项目文件夹及内部不被过滤的文件都会标有一个大大的对号。

e. 此时在服务器的公共库目录下 使用 git log 命令,可看到刚刚 push 的项目日志。
这样公共库的建立及第一次初始化操作完毕(图 Tor 1, Tor 2)。

f. 用同样的方法可将之前创建的 .gitignore 文件上传,不妨试一下。

三、从已建立好的公共库上 clone 项目

1. 在 AndroidSpace 同目录下,右键 -> Git clone -> Git clone 对话框,填写 Url 和 Directory,
Url: username@server_ip:your_account_dir/gitdemo.git。
点击 “OK”,完成 clone。

此时,你可以在 Eclipse 中导入这个新建库中的 Test 项目。就像“Windows XP 下使用 Git 小记 (二)”一样。

四、进行一次两个客户端的同步
这里,由于我是在一台机器上进行操作,所以不能起同样的项目名称,我的当前环境如下:
(你可以将 Eclipse 中的项目删除,重新导入,并分别重命名为 Test1 Test2)

D:/AndroidSpace/Test 导入为–> Eclipse Test1
D:/AndroidClient/Test 导入为–> Eclipse Test2

AndroidSpace 和 AndroidClient 为前述中提到的两个本地 Git Repository, 在服务器上有我们的公共
Git 库 gitdemo.git。

现在要做的就是,修改 Test1 中的 Test.java 文件,提交修改,并同步到 gitdemo.git,Test2 再与
gitdemo.git 同步,获取最新的 Test.java 文件的修改。

在将 Git 中的项目导入到 Eclipse 中时,Eclipse 会修改项目目录下的 .classpath 文件,没有关系,
它看起来似乎只是调换了一下里面的内容。把它当作一个普通文件就好了。

1. 打开 Test1 项目的 Test.java 文件,添加如下代码:

private static final String TAG = “Test”;


setContentView(R.layout.main);
Log.v(TAG, “Test Message”);

2. 保存修改后,(不是在 Eclipse 中)右键点击 Test.java -> (Git commit -> “master”)
-> 填写 comment,确认要更改的文件,并点击“OK”提交 -> Close;

3. 右键 Test.java -> TortoiseGit -> Push… -> 填写字段 -> OK,push完毕。
可以在服务器端 git log 看看日志。

4. 下面对 AndroidClient 进行一下同步。
右键 AndroidClient -> Git Sync… -> Git Synchronization 对话框 -> 填写表单 ->
点击“Pull”按钮 -> 就会显示出同步结果。
我的有两个: add .gitignore 和 modify Test.java,如果没有冲突,将会自动合并,
如有冲突,那就先解决冲突,再提交修改。

=================================================================================
实际使用的情况会更负责,比如 push 时,一般都需要先 pull 一下,否则如果公共库相对你
的本地库有修改,那 push 操作会失败。