通过不同的方式访问数据库,区别就在于连接数据库的字符串的不同,这是我这两天学习的总结
一,通过ODBC访问
1.安装Microsoft ODBC.net:我安装的是mysql-connector-odbc-5.2.2-win32.msi
2,代码中引入 using system.Data.Odbc;
3,连接字符串
string connation = "Driver={MySQL ODBC 5.2w Driver};" //指定驱动程序,驱动程序名可以在ODBC数据源管理器中查看
+"server=localhost;" //指定数据库所在服务器
+"uid=root;" //指定数据库用户
+"Pwd=XXXX;" //密码
+"database=nc;" //要访问的数据库名
+"port=3306;" //开放的端口号
疑问:option是什么????
二,通过OBDC数据源,设定DSN来连接Mysql
通过这种方式连接数据库,可以达到通过更改DSN配置参数来更改程序使用的数据库,不必更改代码。但是不是这种程序是不是有缺陷?
配置DSN步骤
1,安装Microsoft ODBC.net,我安装的是mysql-connector-odbc-5.2.2-win32.msi(官网下载)
2,运行ODBC32,进入ODBC数据源管理器
3,在用户DSN中选择【添加】
4,找到驱动程序(MySQL ODBC 5.2w Driver),点击完成
5,配置参数
Data Source Name(数据源命名,随意吧):JamesDataBase
Despriction (数据源描述):可不填写
Tcp/Ip Server (服务器名):localhost/127.0.0.1
port(开放的端口):默认为3306
Name Pipe?????
user (用户):填写Mys中设置好的用户名,如root
Password(密码):相对应的密码
dataBase:选择数据库
Test:测试是否连接成功
DSN配置结束。
代码中:1,引入using system.data.Odbc
2,连接字符串 connation = "DSN=JamesDataBase"
三、通过MySQL Connector Net访问mysql数据库
首先安装MySQL Connector Net 6.0.2,然后在程序中应用安装程序中的MySql.Data.dll文件
1,在程序引用中引入MySQL.Data
2,在代码中引入using MySQL.Data.MySqlClient;
3,连接字符串为connaction="server=localhost;"
+"database=nc;"
+"uid=root;"
+"pwd=";
访问数据库内容(以查询nc数据库中informationtable表数据为例,使用ODBC访问)
string conn = "Driver={MySQL ODBC 5.2w Driver};"
+"server=localhost;"
+"uid=root;"
+"Pwd=;"
+"database=nc;"
+"port=3306";
//连接数据库字符串
OdbcConnation myCn= new OdbcConnection(conn); //连接数据库对象
string comm = "select * from informationtable"; //操作数据库字符串
myCn.Open(); //打开连接
OdbcCommand myCm = new OdbcCommand(comm,myCn); //操作数据库命令对象
OdbcDataReader myDr = myCm.ExecuteReader(); //读取数据库内容
while(myDr.Reader())
{
if(myDr.HasRows)
{
string[] str = new string[myDr.FieldCount];
for (int i = 0; i < odbcDr.FieldCount; i++)
{
str[i] = odbcDr.GetString(i); //假如我们封装好了一个类,那么这些数据就可以存到一个List<>中
//这里获取每一行的列值,也可以通过GetString(“列名”)
}
}
myDr.Close();
myCn.Close();
//当然操作数据库还要注意处理异常,和关闭
}
其实我们如果通过MySQL.Data.MySqlClient进行访问数据库,只要将间接字符串做一下小小修改,将OdbcConnaction改成MySqlConnaction,将OdbcCommand改成MySqlCommand就可以了