您的位置:首页 > 数据库 > MySQL

在.NET访问MySql数据库时的几点经验(转)

2007-09-05 17:19 344 查看
在.NET中要访问MySql,我采用的是MySql官方提供的.NET connector,此驱动只需要下载即可使用:http://dev.mysql.com/downloads/connector/net/1.0.html

在使用中积累了几点经验:

1)使用Parameter参数形式提交Command时必须要把"@"号换成"?"号,这一点让我困惑了一天,只是不明白MySQL为何要搞特殊呢,象MS、ODP.NET for Oracle、OleDb等方式,都是用"@"号的。

例子如下:

string connstr=Setting.Instance().GetConnectionString("MySql");

MySqlConnection conn =new MySqlConnection(connstr);

conn.Open();

string query = "insert into myfirst(Id,Name) values(?Id,?Name)";

MySqlCommand cmd = new MySqlCommand(query, conn);

MySqlParameter para1=new MySqlParameter("?Id",DbType.Int32); //这里要注意必须要用?号

MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//这里要注意必须要用?号

para1.Value=5;

para2.Value="ddd";

cmd.Parameters.Add(para1);

cmd.Parameters.Add(para2);

cmd.ExecuteNonQuery();

2)在MySQL中也有保留字,为了提供兼容,我必须要找到定界符,好不容易在MySql的论坛里找到了,使用的定界符是`,这个符号不是单引号,而是键盘上数字1前面的那个“点”,真是害死我啊。

3)MySQL中的TOP功能倒是非常简单,只需要语句后面使用“limit n”就行了,这比ORACLE的那Rownum方便多了。

使用MySql 的.NET Connector访问MySQL总体来说还算不错的,大部分是兼容.NET中的IConnection、ICommand的。

PS:有个不明白就是在.NET Connector中提供一个MySqlDateTime类,不知道这个类具体有什么用,怎么用,在国内没有找到相关的资料。MySqlDateTime跟System.Date还不兼容,在MySQL论坛上相关帖子N多。

如果采用String类型的Parameter传递给MySql的DateTime字段会报:Unable to Convert MySql Date/Time value to System.DateTime 的错误。

所有相关的MySQL的问题可以去:http://forum.mysql.com/ 论坛看看:)

function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}

// string conStr = "DRIVER = {MySQL ODBC 3.51 Driver}; SERVER = localhost; DATABASE =test; UID = root; PASSWORD=;";

//string conStr = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=root;PASSWORD=;OPTION=3;";

string conStr = "provider = MySQL ODBC 3.51 Driver; SERVER = localhost; DATABASE =test; UID = root; PASSWORD=;";

try

catch(Exception ex)

string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false;port=3308", "localhost", "root", "", "test");

try

CustomProvider mysqlProvider = new CustomProvider("MySql.Data", "MySql.Data.MySqlClient.MySqlConnection", "MySql.Data.MySqlClient.MySqlDataAdapter");

mysqlProvider.StartDelimiter = "";//default is "/""

mysqlProvider.EndDelimiter = "";//default is "/""

mysqlProvider.ParameterPrefix = "?";//设置参数前缀

mysqlProvider.SelectPageQuery = "SELECT * LIMIT {0} OFFSET {1}";//设置分页算法

mysqlProvider.IdentityQuery = "SELECT LAST_INSERT_ID()";//设置获取刚刚插入记录Id的函数

3:OLE连接:

现在还没有来自官方的支持。

在vs2005中,直接引用for .net2.0版本的dll即可。至于那个商业版,就得费些功夫了,需要一个许可文件(拖动一个Conection组件到Form上就能自动创建该许可)

附,连接字符串可以到这里查询http://www.connectionstrings.com/, 够全的了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: