全部博文(59)
分类: C/C++
2009-05-12 22:07:28
最近首页“论坛热贴”这个板块的数据无法更新,最后发现原来是由于论坛的数据库移到了系统为Linux的服务器上后,用的是MySQL数据库,而“论坛热贴”这个板块是在.Net环境下开发的,所以无法直接掉用到论坛的数据。
这个问题我是第一次遇到过,根本没有着落。最后听我们大炮说有一个叫 “MySQLDriverCS”的东西可以在.Net环境下实现对MySQL数据库的访问,在网上看了一些它的用法,最后是这么解决这个问题的:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySQLDriverCS;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MySQLConnection conn = null;
conn = new MySQLConnection(new MySQLConnectionString("online.cumt.edu.cn", "Dvbbs", "root", "").AsString);
conn.Open();
MySQLCommand commn = new MySQLCommand("set names gb2312",conn);
commn.ExecuteNonQuery();
string sql = "select title,topicID, boardId ,dateandtime,hits from Dv_topic order by dateandtime desc limit 10";
MySQLDataAdapter mda = new MySQLDataAdapter(sql,conn);
DataSet ds = new DataSet();
mda.Fill(ds, "table1");
this.Repeater1.DataSource = ds;
this.Repeater1.DataBind();
conn.Close();
}
}
就这样就可以实现在.NET环境下对MySQL数据的访问。在这之前还要做一些准备,下载MySQLDriverCS,安装,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中就OK了。也许你对这行代码
MySQLCommand commn = new MySQLCommand("set names gb2312",conn);
commn.ExecuteNonQuery();
不太理解。这是因为如果没有这句话从数据库里读出的数据中如果有中文将显示乱码,只要把这个语句“set names gb2312”当作SQL语句执行一遍就可以了。
需要注意的一点是Command的ExecuteReader方法在MySQLDriverCS中变成了ExecuteReaderEx