c#操作mysql数据库
1、下載mysql.Data.dll,在解決方案->引用中引入,并在文件頭部引入
using MySql.Data.MySqlClient;2、創(chuàng)建MySqlConnection對(duì)象(鏈接庫)
string connstr = "data source=localhost;database=cs_test;user id=root;password=123456;pooling=false;charset=utf8";//pooling代表是否使用連接池 MySqlConnection conn = new MySqlConnection(connstr);?3、創(chuàng)建對(duì)應(yīng)操作的MySqlCommand對(duì)象(測(cè)試數(shù)據(jù)庫表名characters,屬性列:id,names,passwords)
string sql = "select * from characters"; MySqlCommand cmd = new MySqlCommand(sql,conn);4、針對(duì)不同操作,MySqlCommand對(duì)象有三個(gè)常用方法
(1)查找多行 :?ExecuteReader()方法
返回一個(gè)MysqlDataReader對(duì)象,包含多個(gè)行,可以用其Read方法逐行讀取。
對(duì)于每行元素,可以用getXXX()方法讀取屬性值,XXX為該屬性類型,參數(shù)為屬性名或者該屬性為這張表的第幾列。
可以用IsDBNull()方法判斷是否為空,參數(shù)只能是該屬性為這張表的第幾列(即只能是數(shù)字)
conn.Open();MySqlDataReader reader = cmd.ExecuteReader();Console.WriteLine("id\t姓名\t密碼");while (reader.Read()){Console.Write(reader.GetInt32("id")+"\t");if (reader.IsDBNull(1)){Console.Write("空\t");}else{Console.Write(reader.GetString("names")+"\t");}if (reader.IsDBNull(2)){Console.Write("空\n");}else{Console.Write(reader.GetString("passwords")+"\n");}}conn.Close();?
(2)查找單個(gè):?ExecuteScalar()
返回值為查找到的元祖第一個(gè)屬性,以object類型返回
string sql2 = "select names from characters where id=2"; MySqlCommand cmd2 = new MySqlCommand(sql2,conn); conn.Open(); string names = cmd2.ExecuteScalar().ToString(); Console.WriteLine(names); conn.Close();(3)增、刪、改: ExecuteNonQuery()
返回值為int,不成功是0,成功是1
string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')"; MySqlCommand cmd3 = new MySqlCommand(sql3,conn); conn.Open(); int s = cmd3.ExecuteNonQuery(); if (s == 0) Console.WriteLine("false"); else Console.WriteLine("success"); conn.Close();5、完整代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data.MySqlClient;namespace mysql_test {class mysqlcz{public mysqlcz(){string connstr = "data source=localhost;database=csceshi;user id=root;password=123456;pooling=false;charset=utf8";using (MySqlConnection conn = new MySqlConnection(connstr)){string sql = "select * from characters";MySqlCommand cmd = new MySqlCommand(sql,conn);conn.Open();MySqlDataReader reader = cmd.ExecuteReader();Console.WriteLine("id\t姓名\t密碼");while (reader.Read()){Console.Write(reader.GetInt32("id")+"\t");if (reader.IsDBNull(1)){Console.Write("空\t");}else{Console.Write(reader.GetString("names")+"\t");}if (reader.IsDBNull(2)){Console.Write("空\n");}else{Console.Write(reader.GetString("passwords")+"\n");}}conn.Close();string sql2 = "select names from characters where id=2";MySqlCommand cmd2 = new MySqlCommand(sql2,conn);conn.Open();string names = cmd2.ExecuteScalar().ToString();Console.WriteLine(names);conn.Close();string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')";MySqlCommand cmd3 = new MySqlCommand(sql3,conn);conn.Open();int s = cmd3.ExecuteNonQuery();if (s == 0) Console.WriteLine("false");else Console.WriteLine("success");conn.Close();}Console.ReadLine();} }class Program{static void Main(string[] args){mysqlcz mt = new mysqlcz();}} }?6、sql語句參數(shù)化
為防止sql注入,盡量不要使用字符串拼接的方法拼接sql字符串
string uname=Console.ReadLine(); string upwd=Console.ReadLine();//獲取用戶輸入 string sql="insert into characters (names,passwords) values (@name,@pwd)";//使用@符構(gòu)造sql變量 MysqlCommand cmd = new MysqlCommand(sql,conn); //使用MysqlCommand對(duì)象的parameters屬性,該屬性為像sql語句傳遞的參數(shù)集合,使用add方法向其中添加參數(shù),參數(shù)以MysqlParameters對(duì)象形式傳遞 cmd.parameters.Add(new MysqlParametes("@name",uname)); cmd.parameters.Add(new MysqlParameters("@pwd",upwd)); conn.Open(); cmd.ExecuteNonQuery(); conn.Close();C# 利用mysql.data 在mysql中創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)表
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | using?System; using?System.Collections.Generic; using?System.Linq; using?System.Text; using?System.Threading.Tasks; using?MySql.Data.MySqlClient; ? namespace?CA_Mysql { ????class?Program ????{ ????????static?void?Main(string[] args) ????????{ ????????????Console.WriteLine("1.創(chuàng)建數(shù)據(jù)表嗎?"); ????????????Console.ReadKey(); ????????????NewDatatable("localhost",?"root",?"pwd",?"newtest1",?"newtb2"); ????????????Console.ReadLine(); ????????} ? ????????/// <summary> ????????/// 創(chuàng)建新的數(shù)據(jù)庫 ????????/// </summary> ????????static?void?NewDatabase(string?dbSource ,string?dbUid,string?dbPwd,string?dbName) ????????{ ????????????//創(chuàng)建連接字符串con ????????????MySqlConnection con =?new?MySqlConnection("Data Source="?+ dbSource +?";Persist Security Info=yes;UserId="?+ dbUid +?"; PWD="+dbPwd+";"); ????????????//創(chuàng)建數(shù)據(jù)庫的執(zhí)行語句 ????????????MySqlCommand cmd =?new?MySqlCommand("CREATE DATABASE "?+ dbName, con); ????????????con.Open(); ????????????//執(zhí)行語句 ????????????int?res = cmd.ExecuteNonQuery(); ????????????con.Close(); ????????} ? ????????/// <summary> ????????/// 創(chuàng)建數(shù)據(jù)表 ????????/// </summary> ????????static?void?NewDatatable(string?dbSource,?string?dbUid,?string?dbPwd,?string?dbName,string?tbName) ????????{ ????????????//創(chuàng)建連接字符串con ????????????MySqlConnection con =?new?MySqlConnection("Data Source="?+ dbSource +?";Persist Security Info=yes;UserId="?+ dbUid +?"; PWD="?+ dbPwd +?";"); ????????????string?newTableCMD =?"USE "?+ dbName +?"; CREATE TABLE `TESTTABLE3` (`Id_` int(11) NOT NULL AUTO_INCREMENT,`NAME` VARCHAR(32) NOT NULL,PRIMARY KEY(`Id_`));"; ????????????MySqlCommand cmd =?new?MySqlCommand(newTableCMD,con); ????????????con.Open(); ????????????//MySqlCommand cmdUseDB = new MySqlCommand("USE " + dbName, con); ????????????//cmdUseDB.ExecuteNonQuery(); ????????????int?res = cmd.ExecuteNonQuery(); ????????????con.Close(); ????????} ? ????} } |
?
總結(jié)
以上是生活随笔為你收集整理的c#操作mysql数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Winform中FormClosing与
- 下一篇: mysql环境安装与配置