首页 / Unity3d / C#

读一读

NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

可以通过VS的NuGet程序包搜索NHibermate通过安装引用。很多的依赖程序包都可以通过NuGet来获取到,包括上次引入的Mysql.Data.dll。


using System;
using MySql.Data.MySqlClient;

namespace Mysql_Conn
{
    class Program
    {
        static void Main(string[] args)
        {
            string conStr = "server=127.0.0.1;port=3306;database=chicai_note;user=root;password=";
            MySqlConnection conn = new MySqlConnection(conStr);
            try
            {
                conn.Open();
                string checkSql = "select * from chicai_config where user_id=@id and name=@name";
                MySqlCommand checkCom = new MySqlCommand(checkSql, conn);
                checkCom.Parameters.AddWithValue("id", 2);
                checkCom.Parameters.AddWithValue("name", "jjj");
                MySqlDataReader read = checkCom.ExecuteReader();
                if (read.Read()) {
                    Console.WriteLine("验证正确");
                }
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
    }
}


在Sql语句中,使用@变量名来标志要填充的区域,然后构建出MysqlCommand,在用这个Command的Parameters的添加参数方法AddWithValue("标志名",值)来替换标志的参数。


所谓查询单个数据指的是查询的数据中只有一行一列

using System;
using MySql.Data.MySqlClient;

namespace Mysql_Conn
{
    class Program
    {
        static void Main(string[] args)
        {
            string conStr = "server=127.0.0.1;port=3306;database=chicai_note;user=root;password=";
            MySqlConnection conn = new MySqlConnection(conStr);
            try
            {
                conn.Open();
                string countSql = "select count(*) from chicai_config";
                MySqlCommand countCom = new MySqlCommand(countSql, conn);
                object res = countCom.ExecuteScalar();//直接获取到要的数据
                Console.WriteLine(res.ToString());
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
    }
}


使用MysqkCommand的ExecuteScalar()方法直接获取到想要的那一个数据


using System;
using MySql.Data.MySqlClient;

namespace Mysql_Conn
{
    class Program
    {
        static void Main(string[] args)
        {
            string conStr = "server=127.0.0.1;port=3306;database=chicai_note;user=root;password=";
            MySqlConnection conn = new MySqlConnection(conStr);
            try
            {
                conn.Open();

                string InsertSql = "insert into chicai_config values(3,'sdsdsd',520)";
                MySqlCommand InsertCom = new MySqlCommand(InsertSql, conn);
                int result = InsertCom.ExecuteNonQuery();//执行将会返回影响的行数
                Console.WriteLine("影响的行数" + result);
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
    }
}


使用MysqlCommand的ExecuteNonQuery执行一些非查询的sql语句,返回的结果是影响的行数。


using System;
using MySql.Data.MySqlClient;

namespace Mysql_Conn
{
    class Program
    {
        static void Main(string[] args)
        {
            string conStr = "server=127.0.0.1;port=3306;database=chicai_note;user=root;password=";
            MySqlConnection conn = new MySqlConnection(conStr);
            try
            {
                conn.Open();
                string sql = "select * from chicai_config";//要执行的sql语句
                MySqlCommand com = new MySqlCommand(sql,conn);//利用MysqlCommand创建命令
                MySqlDataReader reader = com.ExecuteReader();//查询多条数据用的
                while (reader.Read()) {//一行行进行读取
                    Console.WriteLine(reader[0].ToString() + reader.GetString("name").ToString());
                }
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
    }
}

MysqlCommand类含有执行不同类型的sql的方法,其中ExecuteReader()是读取多行结果的。可以通过MysqlDataReader的索引方式和Get***()方法传递字段的方式来获取当前行的列数据。


安装MysqlConnectorNet,在里面找到Mysql.Data.dll引进到项目中

using System;
using MySql.Data.MySqlClient;

namespace Mysql_Conn
{
    class Program
    {
        static void Main(string[] args)
        {
            string conStr = "server=127.0.0.1;port=3306;database=chicai_note;user=root;password=";
            MySqlConnection conn = new MySqlConnection(conStr);
            try
            {
                conn.Open();
                Console.WriteLine("连接成功");
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
    }
}

//使用属性,把域改变了,使用v时用的就是一个副本
public Vector3 v { get; set; }

void Start () {
    Vector3 i = v;//返回一个副本,用临时量i接住
    i.y = 100;
    v = i;//将i的副本赋值给v
    //v.x = 20;报错的,不是变量,v返回一个副本
    i.x = 1314;//修改i的值和v没有半毛钱关系
}

结构体是值类型,存放在栈空间中。


定义一个新的类型时,比如说,类、枚举类型、委托类型等,新建一个单独的文件来承载并给予合适的名字,这样可以使项目更友好更规范。


TimeSpan是一个描述两个时间的精确差值的结构体

通过获取距离当天开始的时间差值来获取精确的时间点

TimeSpan time = DateTime.Now.TimeOfDay;
time.TotalHours;//双精度的小时数
time.TotalMinutes;//双精度的分钟数
time.TotalSeconds;//双精度的秒数

DateTime now = DateTime.Now;
now.Hour;//整点小时
now.Minute;//整数分钟
now.Second;//整数秒