目录
1、准备步骤
2、MYSQL操作流程
3、MYSQL的C#中的类
4、简单实例
总结:可以把对数据库的操作写成一个个的函数,写到一个helpsql类中,到时候使用的时候就可以直接调用,MYSQL和SQL SERVER 操作是一样的,只不过就是MYSQL要自己下载API 接口,SQL SERVER 不用下载,其他的操作都是一样的。花了一个的时间写,写博客真是累啊,写博客要趁热打铁,昨晚项目后要马上开始记录,不要拖,不然就当时候忘了又要重新开始。还有碰的很好的博客,可以转载过来当做资料开看,应该要对照着他的思路,自己做一遍,而不是看懂就行了,知易行难啊!!!!
1、准备步骤
1.网上下载MySql.Data.dll
2.在项目当中添加引用MySql.Data.dll
3.在操作类当中添加:
using MySql.Data;
using MySql.Data.MySqlClient;
2、MYSQL操作流程
第一步:使用SqlConnection对象连接数据库
第二步:建立SqlCommand对象,执行SQL语句
第三步:对SQL语句执行后的结果进行操作
对返回的结果分为两类
一、用SqlDataReader直接一行一行的读取数据集;
二、DataSet联合DataAdapter来操作数据库
3、MYSQL的C#中的类
1、SqlConnection类
构造函数:SqlConnection(connstr);
属性: Database//获取当前数据库或连接打开后要使用的数据库的名称
Connectionstring//获取或设置用于打开 SQL Server 数据库的字符串
方法: Open()
Close()
Dispose()//释放所有资源
2、SqlCommand类
构造函数:SqlCommand(string,conn)
属性: CommandType//获取或设置一个值,该值指示如何解释
CommandText //获取或设置要对数据源执行SQL 语句
Connection//获取或设置 SqlCommand 的此实例使用的
方法: ExecuteNonQuery(): 返回受影响函数,如增、删、改操作;
ExecuteScalar():执行查询,返回首行首列的结果;
ExecuteReader():返回一个数据流(SqlDataReader对象)。
实例1:
SqlCommand cmd = new SqlCommand ()
cmd.connection =conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText ="select *from produce=@ID";
cmd.Parameters.Add("@ID",SqlDBType.NVarChar,10,ID).values=1;
cmd.ExecuteScalar();
实例2:
SqlCommand cmd = new SqlCommand (“select *from test”,conn);
cmd.ExecuteScalar();
注意: ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,
3、SqlDataReader类
是由ExecuteReader()返回一个数据流(SqlDataReader对象)没有构造方法
属性:Connection//获取与 SqlDataReader 关联的
FieldCount//获取当前行中的列数。
HasRows//获取一个值,该值指示 SqlDataReader 是否包含一行或多行
RecordsAffect//获取执行 Transact-SQL 语句所更改、插入或删除的行数
方法:Read();//使 SqlDataReader 前进到下一条记录
GetType();//获取当前实例的
NextResult();//当读取批处理 Transact-SQL 语句的结果时,使数据读取器前进到下一个结果
4、SqlDataApater类
构造方法:SqlDataApater()
SqlDataApater(string,conn)//使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例
属性: DeleteCommand
SelectCommand
InsertCommand
UpdataCommand
Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值
Update(DataSet)//通过为指定的 DataTable 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值
实例1
// 隐藏了SqlCommand对象的定义,同时隐藏了SqlCommand对象与SqlDataAdapter对象的绑定
SqlDataAdapter myda= new SqlDataAdapter("select * from test",conn);
实例2
SqlCommand mySqlCommand = new SqlCommand();// 创建SqlCommand
mySqlCommand.CommandType = CommandType.Text;
mySqlCommand.CommandText = "select * from product";
mySqlCommand.Connection = sqlCnt;
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
// 创建SqlDataAdapter
myDataAdapter.SelectCommand = mySqlCommand; // 为SqlDataAdapter对象绑定所要执行的SqlCommand对象
5、DataSet类
命名空间:System.Data.DataSet。
数据集,本地微型数据库,可以存储多张表。
//使用DataSet第一步就是将SqlDataAdapter返回的数据集(表)填充到Dataset对象中:
SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt);
DataSet myDataSet = new DataSet(); // 创建DataSet
myDataAdapter.Fill(myDataSet, "product"); // 将返回的数据集作为“表”填入DataSet中,表名可以与数据库真实的表名不同,并不影响后续的增、删、改等操作
//访问dataset中的数据
DataTable myTable = myDataSet.Tables["product"];
foreach (DataRow myRow in myTable.Rows) {
foreach (DataColumn myColumn in myTable.Columns) {
Console.WriteLine(myRow[myColumn]); //遍历表中的每个单元格
}
}
// 修改DataSet
DataTable myTable = myDataSet.Tables["product"];
foreach (DataRow myRow in myTable.Rows) {
myRow["name"] = myRow["name"] + "商品";
}
// 将DataSet的修改提交至“数据库”
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");
// 添加一行
DataRow myRow = myTable.NewRow();
myRow["name"] = "捷安特";
myRow["price"] = 13.2;
//myRow["id"] = 100; id若为“自动增长”,此处可以不设置,即便设置也无效
myTable.Rows.Add(myRow);
// 将DataSet的修改提交至“数据库”
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");
// 删除第一行
DataTable myTable = myDataSet.Tables["product"];
myTable.Rows[0].Delete();
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");
4、简单的例子
简单实例1:
1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingMySql.Data;6 usingMySql.Data.MySqlClient;7
8 namespacemysqltest9 {10 classProgram11 {12 static void Main(string[] args)13 {14 string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";15 using (MySqlConnection conn = newMySqlConnection(connstr))16 {17 try
18 {19 conn.Open();20 MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);21 MySqlDataReader reader =cmd.ExecuteReader();22 int j =reader.FieldCount;23 for (int i = 0; i < j; i++)24 {25 Console.Write(reader.GetName(i));26 Console.Write("\t");27 }28 Console.Write("\n");29 Console.Write(reader.GetType()+"\n");30
31 while(reader.Read())32 {33 if(reader.HasRows)34 {35 for (int i = 0; i < j; i++)36 {37 Console.Write(reader[i]);38 Console.Write("\t");39
40 }41 Console.Write("\n");42 }43 }44
45 reader.Close();46 }47 catch(MySqlException ex)48 {49 Console.Write(ex.ToString());50
51 }52 finally
53 {54 conn.Close();55 }56
57 }58
59 }60 }61 }
View Code
简单实例2:
1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingMySql.Data;6 usingMySql.Data.MySqlClient;7 usingSystem.Data;8
9 namespacemysqltest10 {11 classProgram12 {13 static void Main(string[] args)14 {15 string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";16 using (MySqlConnection conn = newMySqlConnection(connstr))17 {18 try
19 {20 conn.Open();21 MySqlDataAdapter adapter = new MySqlDataAdapter("select * from yg_table", conn);22
23 DataSet ds = newDataSet();24
25 adapter.Fill(ds, "yg_table");26
27 DataTable mytable = ds.Tables["yg_table"];28 for (int i = 0; i < 5;i++)29 Console.Write(mytable.Columns[i].ColumnName+"\t");30 Console.Write("\n");31
32 foreach (DataRow myRow inmytable.Rows)33 {34 foreach (DataColumn myColumn inmytable.Columns)35 Console.Write(myRow[myColumn]+"\t");36 Console.Write("\n");37 }38 Console.Write(mytable.TableName+"\n");39
40 //修改41 //foreach (DataRow myRow in mytable.Rows)42 //{43 //myRow["name"] = "小明";44 //}45 //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);46 //adapter.Update(ds, "yg_table");47
48 //增加一行49 //DataRow mynewRow = mytable.NewRow();50 //mynewRow["id"] = 6;51 //mynewRow["name"] = "小雷";52 //mynewRow["sex"] = "女";53 //mynewRow["age"] = 12;54 //mynewRow["menoy"] = 12;55 //mytable.Rows.Add(mynewRow);56 //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);57 //adapter.Update(ds, "yg_table");58
59 //删除一行
60
61 mytable.Rows[6].Delete();62 MySqlCommandBuilder mycmdbuilder = newMySqlCommandBuilder(adapter);63 adapter.Update(ds, "yg_table");64
65 for (int i = 0; i < 5; i++)66 Console.Write(mytable.Columns[i].ColumnName + "\t");67 Console.Write("\n");68
69 foreach (DataRow myRow inmytable.Rows)70 {71 foreach (DataColumn myColumn inmytable.Columns)72 Console.Write(myRow[myColumn] + "\t");73 Console.Write("\n");74 }75
76 //MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);77 //MySqlDataReader reader = cmd.ExecuteReader();78 //int j = reader.FieldCount;79 //for (int i = 0; i < j; i++)80 //{81 //Console.Write(reader.GetName(i));82 //Console.Write("\t");83 //}84 //Console.Write("\n");85 //Console.Write(reader.GetType()+"\n");86
87 //while (reader.Read())88 //{89 //if (reader.HasRows)90 //{91 //for (int i = 0; i < j; i++)92 //{93 //Console.Write(reader[i]);94 //Console.Write("\t");95
96 //}97 //Console.Write("\n");98 //}99 //}100
101 //reader.Close();
102 }103 catch(MySqlException ex)104 {105 Console.Write(ex.ToString());106
107 }108 finally
109 {110 conn.Close();111 }112
113 }114
115 }116 }117 }
View Code