重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先呢,去Mysql官网下载MySql.Data.dll,然后添加引用
创新互联公司网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了成都网站建设、成都网站设计,成都网站设计,广告投放,成都做网站选创新互联公司,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。
using MySql.Data.MySqlClient;
然后使用连接字符串的时候,使用以下代码:
MySqlConnectionStringBuilder s = new MySqlConnectionStringBuilder();
s.Server = "192.168.0.100";
s.Port = 3306; //mysql端口号
s.Database = "dbName";
s.UserID = "root";
s.Password = "root";
s.CharacterSet = "latin1";
MySqlConnection mcon = new MySqlConnection(s.ConnectionString);
其他的也要用mysql的,比如MySqlCommand等等。有疑问可以追问~
include iostream
#include stdio.h
int jc(int m){
if(m!=1) return m*jc(m-1);
else return 1;
}
int c(int m,int n){
if(m=n) return jc(m)/(jc(n)*jc(m-n));
}
int main(void){
int m,n;
scanf("%d%d",m,n);
printf("%d\n",c(m,n));
return 0;
}
1、先下载和安装MySQLDriverCS
2、在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中
3、参考代码:(个别引用非必须)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySQLDriverCS;
namespace mysql
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MySQLConnection conn = null;
conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);
conn.Open();
MySQLCommand commn = new MySQLCommand("set names gb2312", conn);
commn.ExecuteNonQuery();
string sql = "select * from exchange ";
MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);
DataSet ds = new DataSet();
mda.Fill(ds, "table1");
this.dataGrid1.DataSource = ds.Tables["table1"];
conn.Close();
}
}
}
MySQL 数字类型转换函数(concat/cast)。
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到字符串 ’80′。
2、将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串。
总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)。
扩展资料:
可用的类型:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
cast函数运行示例
参考资料:mysql-百度百科
字符串类型( )
与CHAR 和VARCHAR 类似的类型还有BINARY 和VARBINARY 它们存储的是二进制字符串 二进制字符串跟常规字符串非常相似 但是二进制字符串存储的是字节码而不是字符 填充也不一样 MySQL 填充BINARY 采用的是\ (零字节)而不是空格 在检索时也不会去掉填充值
当需要存储二进制数据 并且希望MySQL 使用字节码而不是字符进行比较时 这些类型是非常有用的 二进制比较的优势并不仅仅体现在大小写敏感上 MySQL 比较BINARY 字符串时 每次按一个字节 并且根据该字节的数值进行比较 因此 二进制比较比字符比较简单很多 所以也就更快
慷慨是不明智的
使用VARCHAR( ) 和VARCHAR( ) 存储 hello 的空间开销是一样的 那么使用更短的列有什么优势吗?
事实证明有很大的优势 更大的列会消耗更多的内存 因为MySQL 通常会分配固定大小的内存块来保存内部值 尤其是使用内存临时表进行排序或操作时会特别糟糕 在利用磁盘临时表进行排序时也同样糟糕
所以最好的策略是只分配真正需要的空间
BLOB 和TEXT 类型
BLOB 和TEXT 都是为存储很大的数据而设计的字符串数据类型 分别采用二进制和字符方式存储
实际上 它们分别属于两组不同的数据类型家族 字符类型是TINYTEXT SMALLTEXT TEXT MEDIUMTEXT LONGTEXT ;对应的二进制类型是TINYBLOB SMALLBLOB BLOB MEDIUMBLOB LONGBLOB BLOB 是SMALLBLOB 的同义词 TEXT 是SMALLTEXT 的同义词
与其他类型不同 MySQL 把每个BLOB 和TEXT 值当作一个独立的对象处理 存储引擎在存储时通常会做特殊处理 当BLOB 和TEXT 值太大时 InnoDB 会使用专门的 外部
存储区域来进行存储 此时每个值在行内需要 ~ 个字节存储一个指针 然后在外部存储区域存储实际的值
BLOB 和TEXT 家族之间仅有的不同是BLOB 类型存储的是二进制数据 没有排序规则或字符集 而TEXT 类型有字符集和排序规则
MySQL 对BLOB 和TEXT 列进行排序与其他类型是不同的 它只对每个列的最前max_sort_length 字节而不是整个字符串做排序 如果只需要排序前面一小部分字符 则可以减小max_sort_length 的配置 或者使用ORDER BY SUSTRING(column length)
MySQL 不能将BLOB 和TEXT 列全部长度的字符串进行索引 也不能使用这些索引消除排序 (关于这个主题下一章会有更多的信息 )
磁盘临时表和文件排序
因为Memory 引擎不支持BLOB 和TEXT 类型 所以 如果查询使用了BLOB 或TEXT列并且需要使用隐式临时表 将不得不使用MyISAM 磁盘临时表 即使只有几行数据也是如此(Percona Server 的Memory 引擎支持BLOB 和TEXT 类型 但直到本书写作之际 同样的场景下还是需要使用磁盘临时表)
这会导致严重的性能开销 即使配置MySQL 将临时表存储在内存块设备上(RAMDisk) 依然需要许多昂贵的系统调用
最好的解决方案是尽量避免使用BLOB 和TEXT 类型 如果实在无法避免 有一个技巧是在所有用到BLOB 字段的地方都使用SUBSTRING(column length) 将列值转换为字符串(在ORDER BY 子句中也适用) 这样就可以使用内存临时表了 但是要确保截取的子字符串足够短 不会使临时表的大小超过max_heap_table_size 或tmp_table_size 超过以后MySQL 会将内存临时表转换为MyISAM 磁盘临时表
最坏情况下的长度分配对于排序的时候也是一样的 所以这一招对于内存中创建大临时表和文件排序 以及在磁盘上创建大临时表和文件排序这两种情况都很有帮助 例如 假设有一个 万行的表 占用几个GB 的磁盘空间 其中有一个utf 字符集的VARCHAR( ) 列 每个字符最多使用 个字节 最坏情况下需要 字节的空间 如果在ORDER BY 中用到这个列 并且查询扫描整个表 为了排序就需要超过 GB 的临时表
这三行数据实际存储为整数 而不是字符串 可以通过在数字上下文环境检索看到这个双重属性
返回目录 高性能MySQL
编辑推荐
ASP NET MVC 框架揭秘
Oracle索引技术
ASP NET开发培训视频教程
lishixinzhi/Article/program/MySQL/201311/29686
MySQL数据类型之一字符型
VARCHAR VS CHAR
VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符。
假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要
MySQL数据类型之二文本型
TEXT
使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。
注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。
MySQL数据类型之三数值型
SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。
INT VS SMALLINT VS TINYINT
他们的区别只是字符长度:
INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数
SMALLINT 型数据可以存储从-32768到32768的整数
TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数
通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。
MUNERIC
为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。
当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(23,0)
一个 NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。
MONEY VS SMALLMONEY
你可以使用 INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。
SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。
MySQL数据类型之四逻辑型
BIT
如果你使用复选框( CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。
当心,在你创建好一个表之后,你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。
MySQL数据类型之五日期型
DATETIME VS SMALLDATETIME
一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。
如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。
DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。