c#带参数的sql语句写入mysql,

下面是别人解决问题的总结:

问题解决了。总结一下:
1.mysql数据库驱动有两种:mysql-connector-odbc和mysql-connector-net,
前者不支持参数,后者支持,这是我测试的结果;
2.参数变量使用跟SqlServer一样,只需把@变为?,
如,mysql中写为:insert into test values ( id, title, type,now())”;
3.使用mysql-connector-net驱动很简单,到网上下载mysql-connector-net-5.2.3-src,
解压后,把mysql.data.dll添加到项目的bin文件夹即可使用;
4.连接本机mysql数据库方法例子如下—mysql-connector-net:

1)Using Web.config

<connectionstrings>
<add name=”WhateverName” connectionString=”server=localhost;user id=root; password=yourPassword;database=yourDatabase;;charset=utf8;“/>
</connectionstrings>

charset=utf8字符集

2)using statements

using MySql.Data.MySqlClient;

下面附上测试通过的代码:
string connStr = WebConfigurationManager.
ConnectionStrings[“WhateverName”].ConnectionString;
MySqlConnection conn = new MySqlConnection(connStr);
if (conn != null)
conn.Open();
else
return;

string SQL_INSERT_TOPIC = “insert into test values (null, title, type,now())”;
string PARM_TITLE = ” title”;
string PARM_TYPE = ” type”;
MySqlParameter[] parms = new MySqlParameter[]
{
new MySqlParameter(PARM_TITLE,MySqlDbType.VarChar,80),
new MySqlParameter(PARM_TYPE,MySqlDbType.VarChar,1)
};
parms[0].Value = “welcome to beijing”;
parms[1].Value = “C”;

MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = SQL_INSERT_TOPIC;

foreach (MySqlParameter pram in parms)
cmd.Parameters.Add(pram);

cmd.ExecuteNonQuery();
conn.Close();

5.连接本机mysql数据库方法例子如—mysql-connector-odbc

 

转自:

http://dotnetperls.com/Content/OdbcConnection-Example.aspx

MYSQL导入导出.sql文件

一.MYSQL的命令行模式的设置:
桌面->我的电脑->属性->环境变量->新建->
PATH=“;path\mysql\bin;”其中path为MYSQL的安装路径。
二.简单的介绍一下命令行进入MYSQL的方法:
1.C:\>mysql -h hostname -u username -p
按ENTER键,等待然后输入密码。这里hostname为服务器的名称,如localhost,username为MYSQL的用户名,如root。
进入命令行后可以直接操作MYSQL了。
2.简单介绍一下MYSQL命令:
   mysql->CREATE DATABASE dbname;//创建数据库
   mysql->CREATE TABLE tablename;//创建表
   mysql->SHOW DATABASES;//显示数据库信息,有那些可用的数据库。
  mysql->USE dbname;//选择数据库
   mysql->SHOW TABLES;//显示表信息,有那些可用的表
   mysql->DESCRIBE tablename;//显示创建的表的信息
三.从数据库导出数据库文件:
1.将数据库mydb导出到e:\mysql\mydb.sql文件中:
打开开始->运行->输入cmd    进入命令行模式
c:\>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
2.将数据库mydb中的mytable导出到e:\mysql\mytable.sql文件中:
c:\>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql
3.将数据库mydb的结构导出到e:\mysql\mydb_stru.sql文件中:
c:\>mysqldump -h localhost -u root -p mydb –add-drop-table >e:\mysql\mydb_stru.sql
四.从外部文件导入数据到数据库中:
从e:\mysql\mydb2.sql中将文件中的SQL语句导入数据库中:
1.从命令行进入mysql,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。
2.退出mysql 可以输入命令exit;或者quit;
3.在CMD中输入下列命令:
c:\>mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql
然后输入密码,就OK了。
五.下面谈一下关于导入文件大小限制问题的解决:
默认情况下:mysql 对导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:
1.在php.ini中修改相关参数:
影响mysql导入文件大小的参数有三个:
    memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_max_filesize=200 M  这里修改满足你需要的大小,
可以同时修改其他两项memory_limit=250M  post_max_size=200M
这样就可以导入200M以下的.sql文件了。

MySQL默认密码修改的方法

来自于: http://soft.ccw.com.cn/programing/database/htm2008/20080721_468620.shtml

 

对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_install_db脚本来生成帐户和相应权限许可表。但是如果不是用MSI格式来安装MySQL的话,就需要在安装完以后,手动给 root帐户添加新密码,因为默认情况下的root没有开启密码保护功能,如果不重新赋予root帐户密码,那么许多非本机的连接将 无法成功。具体更新密码步骤如下:

c:\>mysql -u root 

mysql>set password for 'root'@'localhost'=password('newpasswd'); 

mysql>set password for 'root'@'%'=password('newpasswd');

 

 

 //本条可选通过以上设置,root的密码将变为newpasswd这样就完成了根用户root密码的设置工作。

mysql命令

测试环境:mysql 5.0.45

【注:可以在mysql中通过mysql> SELECT VERSION();来查看数据库版本】

整理:leo

一、连接MYSQL。

格式: mysql -h主机地址 -u用户名 -p用户密码

1、连接到本机上的MYSQL。

首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)

二、修改密码。

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命令

mysqladmin -u root -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、再将root的密码改为djg345。

mysqladmin -u root -p ab12 password djg345

三、增加新用户。

(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:

grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),

这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

下篇我是MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

一、操作技巧

1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。

也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。

2、你可以使用光标上下键调出以前的命令。

二、显示命令

1、显示当前数据库服务器中的数据库列表:

mysql> SHOW DATABASES;

注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示数据库中的数据表:

mysql> USE 库名;

mysql> SHOW TABLES;

3、显示数据表的结构:

mysql> DESCRIBE 表名;

4、建立数据库:

mysql> CREATE DATABASE 库名;

5、建立数据表:

mysql> USE 库名;

mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));

6、删除数据库:

mysql> DROP DATABASE 库名;

7、删除数据表:

mysql> DROP TABLE 表名;

8、将表中记录清空:

mysql> DELETE FROM 表名;

9、显示表中的记录:

mysql> SELECT * FROM 表名;

10、往表中插入记录:

mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);

11、更新表中数据:

mysql-> UPDATE 表名 SET 字段名1=’a’,字段名2=’b’ WHERE 字段名3=’c’;

12、用文本方式将数据装入数据表中:

mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;

13、导入.sql文件命令:

mysql> USE 数据库名;

mysql> SOURCE d:/mysql.sql;

14、命令行修改root密码:

mysql> UPDATE mysql.user SET password=PASSWORD(’新密码’) WHERE User=’root’;

mysql> FLUSH PRIVILEGES;

15、显示use的数据库名:

mysql> SELECT DATABASE();

16、显示当前的user:

mysql> SELECT USER();

三、一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ‘深圳’,

year date

); //建表结束

//以下为插入字段

insert into teacher values(”,’allen’,’大连一中’,’1976-10-10′);

insert into teacher values(”,’jack’,’大连二中’,’1975-12-23′);

如果你在mysql提示符键入上面的命令也可以,但不方便调试。

(1)你可以将以上命令原样写入一个文本文件中,假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

(2)或者进入命令行后使用 mysql> source c:\\school.sql; 也可以将school.sql文件导入数据库中。

四、将文本数据转到数据库中

1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.例:

3 rose 大连二中 1976-10-10

4 mike 大连一中 1975-12-23

假设你把这两组数据存为school.txt文件,放在c盘根目录下。

2、数据传入命令 load data local infile “c:\\school.txt” into table 表名;

注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。

五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)

1.导出整个数据库

导出文件默认是存在mysql\bin目录下

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u user_name -p123456 database_name > outfile_name.sql

2.导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u user_name -p database_name table_name > outfile_name.sql

3.导出一个数据库结构

mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql

-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.带语言参数导出

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql

解决mysqlErrorNr.1045问题

本机原有一个MYSQL数据库,经卸载后,新安装mysql数据库的时候,

 

安装最后一步提示“Error Nr. 1045 ……”,进入MySQL Command Line Client,输入root密码后自动关闭

解决方法:

1.进入控制面板->管理工具->服务,停止MySQL的服务

2.进入命令窗口,然后进入MySQL的安装目录,比如进入C:\mysql\bin

3.跳过权限检查启动MySQL
  c:\mysql\bin>mysqld-nt –skip-grant-tables

4.重新打开一个命令窗口,进入c:\mysql\bin目录,设置root的新密码
  c:\mysql\bin>mysqladmin -u root flush-privileges password “newpassword”
  c:\mysql\bin>mysqladmin -u root -p shutdown
  将newpassword替换为你要用的root的密码,第二个命令会提示你输入新密码,重复第一个命令输入的密码

5.用正常模式启动Mysql

6.然后就可以用新的密码链接到Mysql

 

注: 3306端口,是mysql服务开启时,自动打开的端口(待验证)

mysql字符串函数:字符串截取

MySQL 字符串函数:字符串截取

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

1. 字符串截取:left(str, length)

mysql> select left('sqlstudy.com', 3);
+-------------------------+
| left('sqlstudy.com', 3) |
+-------------------------+
| sql                     |
+-------------------------+

2. 字符串截取:right(str, length)

mysql> select right('sqlstudy.com', 3);
+--------------------------+
| right('sqlstudy.com', 3) |
+--------------------------+
| com                      |
+--------------------------+

3. 字符串截取:substring(str, pos); substring(str, pos, len)

3.1 从字符串的第 4 个字符位置开始取,直到结束。

mysql> select substring('sqlstudy.com', 4);
+------------------------------+
| substring('sqlstudy.com', 4) |
+------------------------------+
| study.com                    |
+------------------------------+

3.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。

mysql> select substring('sqlstudy.com', 4, 2);
+---------------------------------+
| substring('sqlstudy.com', 4, 2) |
+---------------------------------+
| st                              |
+---------------------------------+

3.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。

mysql> select substring('sqlstudy.com', -4);
+-------------------------------+
| substring('sqlstudy.com', -4) |
+-------------------------------+
| .com                          |
+-------------------------------+

3.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。

mysql> select substring('sqlstudy.com', -4, 2);
+----------------------------------+
| substring('sqlstudy.com', -4, 2) |
+----------------------------------+
| .c                               |
+----------------------------------+

我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

4. 字符串截取:substring_index(str,delim,count)

4.1 截取第二个 ‘.’ 之前的所有字符。

mysql> select substring_index('www.sqlstudy.com.cn', '.', 2);
+------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.', 2) |
+------------------------------------------------+
| www.sqlstudy                                   |
+------------------------------------------------+

4.2 截取第二个 ‘.’ (倒数)之后的所有字符。

mysql> select substring_index('www.sqlstudy.com.cn', '.', -2);
+-------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.', -2) |
+-------------------------------------------------+
| com.cn                                          |
+-------------------------------------------------+

4.3 如果在字符串中找不到 delim 参数指定的值,就返回整个字符串

mysql> select substring_index('www.sqlstudy.com.cn', '.coc', 1);
+---------------------------------------------------+
| substring_index('www.sqlstudy.com.cn', '.coc', 1) |
+---------------------------------------------------+
| www.sqlstudy.com.cn                               |
+---------------------------------------------------+

常用SQL语句(在mysql上测验通过)

本文讲解《数据库处理——基础、设计与实现》第30页中3个表的创建。

  1. 创建table
    mysql> create table ORDER_ITEM
        -> (
        -> OrderNumber integer references retail_order(OrderNumber),
        -> SKU integer references SKU_DATA (SKU),
        -> Quantity integer ,
        -> Price decimal(8,2),
        -> ExtendedPrice decimal(9,2)
        -> );
    Query OK, 0 rows affected (0.16 sec)

     

  2. 创建了表后,要往表里添加数据,在CMD下用insert语句打入数据是相对麻烦的,这里介绍使用引入外部数据的方法。
  3. 新建一个.txt文件,文件里直接打入行数据,每一行的所有列数据都要对应到数据库table中的列中,每一行的不同列数据直接用TAB键隔开,不同行之间用换行隔开。

假如表的列数据类型如下

+-----------------+----------+------+-----+---------+-------+
| Field           | Type     | Null | Key | Default | Extra |
+-----------------+----------+------+-----+---------+-------+
| SKU             | int(11)  | YES  |     | NULL    |       |
| SKU_Description | char(35) | YES  |     | NULL    |       |
| Department      | char(30) | YES  |     | NULL    |       |
| Buyer           | char(30) | YES  |     | NULL    |       |
+-----------------+----------+------+-----+---------+-------+

 对应的txt文件如下,其存放的绝对位置为:C:\Users\Gavin\Desktop\mysqlDigitalbook\data_sku.txt

100100	Std,Scuba Tank,Yellow	Water Sports	Pete
100200	Std,Scuba Tank,Magenta	Water Sports	Pete H
101100	DriveMask,Small Clear	Water Sports	Nancy M
101200	DriveMask,Med Clear	Water Sports	Nancy M

 那么,执行语句,将“data_sku.txt”文件里四行的数据写入表“sku_data”,特别注意在cmd下,路径分隔符是“/”:

mysql> load  data local infile 'C:/Users/Gavin/Desktop/mysqlDigitalbook/data_sku
.txt'
    -> into table sku_data;
Query OK, 2 rows affected (0.02 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

 

mysqldumpslow查看慢查询日志

mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在
mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行

long_query_time = 1
log-slow-queries = /var/youpath/slow.log
log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name
-slow.log,我
生成的log就在mysql的data目录
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

 

-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t
NUM just show the top n queries
-g PATTERN grep: only consider stmts
that include this string

-s,是order的顺序,主要有c,t,l,r和ac,at,al,ar,分别是
按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,
后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log

述命令可以看出访问次数最多的20个sql语句

mysqldumpslow -s r -t 20 host-slow.log

述命令可以看出返回记录集最多的20个sql。

mysqldumpslow -t 10 -s t -g “left join”
host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句

【转载】MySql重装无响应

本人用的是mysql-5.1.53-win32.msi的安装包,今天在重装
mysql的时候,总是在提交配置后的最后一步,安装失败,进程管理器里显示程序无响应,mysql服务启动时报1067错误.搜索了一下网上的答案,有
一篇文章说的是my.ini里缺失了tmpdir参数,只要加入此参数配置即可,结论是否正确没有研究过.个人觉得最主要的原因还是重装mysql前,没
有卸载干净的原因.

1.
在添加删除程序删除旧版的MYSQL


2.
清理注册表:


A.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
目录

B.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
目录

C.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
目录

D.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl001t\Services\MYSQL
目录

E.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl002\Services\MYSQL
 目录

F.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL
 目录

3.
删除C:\Documents and Settings\All Users\Application Data\MySQL 目录




4.
重新安装新版MYSQL


经过以上几步后,mysql安装正常,启动正常.

windows下MySQL更改数据库文件目录及1045,1067错误

MySQL安装时不能选择数据库文件的安装位置,

也没有可用的直接更改数据库目录的工具,要想更改数据目录,方法如下:

MySQL安装并配置完毕,默认的数据哭安装目录为

C:\ProgramData\MySQL\MySQL Server 5.1\data(vist或者win7下)

C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/(xp下),

下面以win7为例介绍:

1.正常安装并配置MySQL;

2.新建想修改的数据库安装目录如E:\MySQL\Data;

3.拷贝C:\ProgramData\MySQL\MySQL Server 5.1\data下所有文件到E:\MySQL\Data;

4.找到MySQL软件的安装目录默认为C:\Program Files\MySQL\MySQL Server 5.1中的my.ini文件

  找到

  datadir=”C:/ProgramData/MySQL/MySQL Server 5.1/data/”

  修改为:datadir=”E:\MySQL\Data”,特别注意是”\”而不是”/”,否则不能成功(不知为何!!!)

5.重新启动MySQL服务即可,新建一个数据库目录E:\MySQL\Data下就会多出一个文件夹即数据库目录。

注意:完成之后不要删除C:/ProgramData/MySQL/MySQL Server 5.1/data/目录(尽管可以删除),因为

以后重新配置时删除现有实例,再配置新的实例时可能会出现服务无法启动的问题,因为程序还会默认的

把C:/ProgramData/MySQL/MySQL Server 5.1/data/作为数据库目录。。。

重要提示:

安装配置MySQL经常会遇到两个错误

1是1045,这个往往是重新安装或重新配置数据库要求输入原来的密码,而密码错误导致的,

解决办法是重新安装之前卸载原来的程序,并删除安装目录和C:\ProgramData\下的MySQL目录,重新安装即可。

2是1067,这是上面提到的更改数据库目录后如果设置不正确启动服务是遇到的错误,按照上面的步骤即可避免。

原文:http://blog.csdn.net/tjut2008/archive/2010/09/11/5877796.aspx