目录
C#连接MySQL
C#连接
首先在VS项目中添加MySql.Data引用,浏览
具体位置一般在C:\Program Files (x86)\MySQL\Connector NET\Assemblies\v4.0(根据项目框架进行选择)
namespace CSharp连接
{
class Program
{
static void Main(string[] args)
{
string connectStr =
"server=127.0.0.1;port=3306;database=mygamedb;user=**;password=**;sslmode=none;";
MySqlConnection conn = new MySqlConnection(connectStr);
try
{
conn.Open();
Console.WriteLine("建立连接");
}
catch(Exception e)
{
Console.WriteLine(e);
}
finally
{
conn.Close();
}
Console.ReadKey();
}
}
}
增删改查方法
MySqlConnection
MySqlCommand
MySqlDataReader(获取查询数据)
MySqlCommand.ExecuteReader() 查询
MySqlCommand.ExecuteNonQuery()插入删除修改
MySqlCommand.ExecuteScalar()查询,返回单个值
//查询
string sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql,conn);
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
Console.WriteLine(reader[0].ToString());//读取该行的第一个字段 object类型
//也可以 reader.GetInt32(0) 字段索引 返回int
// reader.GetString(1)则返回 string
// reader.GetInt32("字段名") GetString("字段名")
}
//插入
string sqlinsert = "insert into users(username,password) values('sfsdf','fssdf') ";
cmd = new MySqlCommand(sqlinsert, conn);
int result=cmd.ExecuteNonQuery();//返回影响的记录数
//单个查询
string sqlScalar="select count(*) from users"
cmd = new MySqlCommand(sqlScalar, conn);
object o = cmd.ExecuteScalar();
int count = Convert.ToInt32(o.ToString());
Console.WriteLien(count);
NHibernate与MySql交互
(主要是可以像操作对象一样去操作数据库的数据)
配置
项目配置,打开项目属性,修改好程序集和命名空间的名称
一样的添加MySql.Data引用.dll引用
引入NHibernate.dll 可以在解决方案资源管理器中对项目右键管理NuGet中搜索NHibernate直接下载
如果无法下载就到官网直接下载,解压找到这个文件添加到项目的引用即可。
xml文件配置,参考官网教程
添加一个新文件命名为 hibernate.cfg.xml 一定得这么命名,属性设置为始终复制
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<!--数据库版本 MySQL5-->
<property name="connection.driver_class">NHibernate.Driver.MySQLDataDriver</property>
<!--使用的数据库 MySQLData-->
<property name="connection.connection_string">Server=localhost;Database=mygamedb;User ID=**;Password=**;SslMode=none;</property>
<!--配置连接数据库的信息-->
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
映射
数据库里一个表对应一个类,如users表建一个类User(命名自取),我把这些类放在一个文件夹下便于管理
namespace Photon.Model
{
public class User
{
public virtual int Id { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual DateTime Registerdate { get; set; }
}
}
建一个映射的xml文件,命名最好和类名一致比较好找,后缀必须是 类名.hbm.xml ,可以把映射的xml都放在一个文件夹下
属性的生成操作设置为嵌入的资源 和类打包到程序集的
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Photon"
namespace="Photon.Model">
<!--修改成对应的程序集和命名空间名称-->
<class name="User" table="users"><!--name是类名,table就是数据库的表名-->
<id name="Id" column="id" type="Int32"><!--主键,字段名,数据类型-->
<generator class="native" /><!--自动增长-->
</id>
<property name="Username" column="username" type="String"/>
<property name="Password" column="password" type="String"/>
<property name="Registerdate" column="registerdate" type="Date"/>
</class>
</hibernate-mapping>
创建session 增删改查
Session.Save();
Session.Delete()
Session.Update()
using NHibernate;
using NHibernate.Cfg;
using Photon.Model;
namespace Photon
{
class Program
{
static void Main(string[] args)
{
var configuration = new Configuration();
configuration.Configure();//解析hibernate.cfg.xml
configuration.AddAssembly("Photon");
Console.WriteLine("成功");
ISessionFactory sessionFactory = null;//会话工厂
ISession session = null;
try
{
sessionFactory= configuration.BuildSessionFactory();
session =sessionFactory.OpenSession();//打开一个跟数据库的会话
User user = new User() { Username = "user1", Password = "user1" };
session.Save(user);
}
catch(Exception e)
{
Console.WriteLine(e);
}
finally
{
if(session!=null)
{
session.Close();
}
if(sessionFactory!=null)
{
sessionFactory.Close();
}
}
Console.ReadKey();
}
}
}
创建事务
sessionFactory= configuration.BuildSessionFactory();
session =sessionFactory.OpenSession();//打开一个跟数据库的会话
ITransaction transaction=session.BeginTransaction();//开启事务
User user2 = new User() { Username = "user2", Password = "user2" };
User user1 = new User() { Username = "user1", Password = "user1" };
session.Save(user2);
session.Save(user1);
transaction.Commit();//事务提交,只有上面两个save操作都成功了才会写入数据库
transaction.Dispose();//也要关闭