数据库(mysql)在C#中的连接和使用
首先说一下如何配置mysql数据库环境吧!
第一就是安装MYSQL环境!安装好了就是自己学会在Navicat for mysql终端之后就是自己学着去自己建立数据库就好了
如何在C#中去使用这个呢?
第一数据库的连接
首先C#(vs2010)中没有MySql的数据库引用所以要假如一个引用,可以下载一个MySql.Data.dall的驱动,然后计入到引用中去这样就可以了!下面主要介绍一下其中的很多程序中的应用!
其他数据库一样先加入命名空间using MySql.Data.MySqlClient;;
首先介绍一下几个常用的类
Connection 只建立连接不发送SQl命令
Command 必须在Connection连接以后才能使用,主要负责的就是数据库的增删改查等的功能
DataAdapter 建立在Connection和DataSet之间的桥梁,就是可以通过Fill()方法把数据库数据移动到DataSet中,后用更新的方法把数据在议回!
DataReader 主要作用就是作为Command的ExecuteReader的返回的对象,其实就是利用read方法读取并下移用GetValue()查询字段!但是不能返回更新数据库。
DataSet 通过DataRow和DataCloumn对DataSet经行各种操作!
这样可以了!首先是连接数据库,连接数据库首先要的就是连接字符串
MySql的字符串的案例是:
“srver=127.0.0.1;user id=root; password=123456; database=hxw; pooling=false;charset=utf8”
首先是链接地址srver r要是是本机就是127.0.0.1 第二个是你的用户名user id:和你的数据库的用户名一样 打三个是用户名密码password:就是你的数据库创建连接的时候的密码! 第四就是你的数据库的名字database!后面两个可有可无!(第五个pooling是指的缓冲池一般你直接设置为false就可以了这个数的意思是在每次请求连接时,每个连接是否被显式打开。最后一个charset要设置为和你安装MySql时选择的一直!否则会在显示的时候出现乱码!
连接数据库打开数据库!
示例代码:
实例1 用实例化连接类的方法
MySqlConnection nn = new MySqlConnection(); 先是实例化连着这个类
conn.ConnectionString = connectionString; 然后设置连接字符串这样就连接到了
conn.Open(); 现在就可以打开连接了
if (conn.State == ConnectionState.Open) 验证是否是打开数据库
{
MessageBox.Show("数据库打开成功
|");
}
Conn.close();
实例 2 用using语句
using (MySqlConnection conn = new MySqlConnection(connectionString)
{
conn.Open();
if (conn.State == ConnectionState.Open)
{
MessageBox.Show("数据库打开成功|");
}
}
这样的好处就是在用完之后会跳出using的时候会自动释放的
亲只要现在你打开看数据库以后的事情就好办多了!我当时没有啥资料结果到这步花了好多好多的时间不过也值了对此了解了很多
之后就是对数据库经行 操作了
第二部分就是操作数据库
首先介绍一下使用Command对象对数据进行操作,Command执行的主要是数据的增删改查(还有就是执行存储过程我也不是很明白待会再说)
首先先看一段实例代码吧!
先把我的数据库的截屏看看吧!这样更真实一些
实例1
1 using (MySqlConnection conn = new MySqlConnection(connectionString))
2 {
3 conn.Open();
4 if (conn.State == ConnectionState.Open)
5 {
6 MessageBox.Show("数据库打开成功");
7 } 这段操作打开数据库
8 MySqlCommand com = new MySqlCommand(); 实例化Command类
9 com.CommandText = "DELETE FROM login1 WHERE Id=@Id ";
10 用CommandText获取SQL命令语句,关于SQL语句待会说
11 com.Connection = conn; 指定命令执行时连接数据库
12 MySqlParameter[] paras ={
13 new MySqlParameter("@Id",MySqlDbType.Int16,11)
14 };
这里是实例化一个参数对象为数组为上面的连接字符串里面的参数赋值关于这个使用可以自己去查查
15 paras[0].Value = "1"; 给声明的参数数组对象赋值
16 com.Parameters.AddRange(paras); 增加一个数组
17 int i = com.ExecuteNonQuery(); 检测数据库中是否是有记录发生改变
18 if (i > 0)
19 {
20 MessageBox.Show("已经删除");
21 }
22 else if (i <= 1)
23 {
24 MessageBox.Show("删除失败¨¹");
25 }
注意
在第9行中实现的是一个Id的参数,如果刚刚开始学的时候饿、可以直接用你想删除的记录的Id其代码如下
com.CommandText = "DELETE FROM login1 WHERE Id=6";
这样的话就没有第12~16的代码了
其实这段代码主要的就是为那个参数值赋值的!这样就可以很好的在外面接受这些想删除的记录!
下面要说就是SQL语句了(小叙一段我就是在这里吃了大亏好长时间没有把语句整明白)简单的说就是必须在MySql下面查询系统下能运行的就能用!
这里主要用到的语句就是删除和查找
删除语句: deldect form login1 where id=1;
Delect from 表名 where 加条件
查询语句: select * from login1
这时候注意的就是中间多了一个 “*”符号
其中command的基本属性我就不说了大家可以去查一下!
DataReader的使用
作用用于从数据源中检索只读数据集,只允许以只读、顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,DataReader对象可通过Command对象的ExecuteReader方法从数据源中检索数据来创建。
使用方法:首先打开数据库,建立Command对象,确定SQL语句,最后用一个Commandname.ExecutereReader()方法返回一个对象。
方法及属性
GetName:该方法获取指定列的名称
IsDBNull:该方法获取一个值显示指定列是否缺少值
Read:该方法在于推进下一行,如果是有下一行就会返回一个true如果是已经到底部了就会返回一个false,常用语读取的wihle的判断
Depth:该属性返回一个值,指示现在行的深度
FieldCount:该属性获取当前行数的列数
实例2
String connectionString = "server=127.0.0.1;user id=root; password=123456; database=hxw";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
MySqlCommand com = conn.CreateCommand(); 实例化命令
com.CommandText = "select * from login1 "; 给予SQL命令
conn.Open(); 打开数据库
MySqlDataReader dr = com.ExecuteReader(); 创建对象用Command读取数据
while (dr.Read())
{
label1.Text += dr.GetValue(0).ToString() + " " +
dr.GetValue(1).ToString() + " " +
dr.GetValue(2).ToString() + " " +
dr.GetValue(3).ToString() + " " +
dr.GetValue(4).ToString() + " " +
dr.GetValue(5).ToString() + " " +
dr.GetValue(6).ToString() + "\r\n";
}
}
Dr.Close(); 关闭MySqlDataReader对象
注解:
DataReader的意思就是数据阅读器,它是以类似于指针的形式读取数据库里面的记录,具有效率高的特点。使用Read()方法可以将满足查询的记录依次读取出来,类似于指针的Next()方法。使用while循环可以读取到全部记录,读取到最后一条记录时退出循环。返回的值为Object类型,可以进行转换以得到需要的数据。
示例:
while(reader.Read())
{
string name = reader["name"].ToString(); // name为查询语句中的name列
}
注意使用datareader必须及时关闭,否则会与数据库建立长连接,消耗数据库的连接数。关闭连接使用Close()方法或使用Using方法让系统帮你自动释放。
DataTable和DataView的使用
DataTable 是一个网格状的虚拟的表用来临时保存数据的;以便于进行数据的操作。(其实我也是不使命百度就是最后自己也说不清楚就是这样一个概念)相当于一个临时的储存便于操作。
DataView:表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。主要功能就是允许在Windows窗体和Web窗体上进行数据绑定,
只有同已经存在的、很可能是非空的DataTable对象连接后才可用。通常,这个连接在构造时就指定了。
实例3
String connectionString = "server=127.0.0.1;user id=root; password=123456; database=hxw";
using (MySqlConnection conn = new MySqlConnection(connectionString))
连接数据库
{
MySqlCommand com = conn.CreateCommand(); 实例化Command命令
com.CommandText = "select * from login1 "; 给予SQL命令
conn.Open(); 打开数据库
MySqlDataReader dr = com.ExecuteReader(); 通过ExecuteReader()方法返回对象实例化MySqlDataReader
while (dr.Read()) 判断执行
{
label1.Text += dr.GetValue(0).ToString() + " " +
dr.GetValue(1).ToString() + " " +
dr.GetValue(2).ToString() + " " +
dr.GetValue(3).ToString() + " " +
dr.GetValue(4).ToString() + " " +
dr.GetValue(5).ToString() + " " +
dr.GetValue(6).ToString() + "\r\n";
}
DataSet的用法:
DataSet利用DataRow和DataCloum来对数据库经行处理!首先介绍一下适配器!其中其是数据的内存的驻留表示方式也谁就是说相当于我们直接操作的一个数据,可以包含多个数据源。
DataAdapter::表示一组数据命令和一个数据库的连接,其作用是把数据库的数据用fill()的方法填充到DataSet表中,同时将更改后的数据分析回数据源。
实例4
String connectionString = "server=127.0.0.1;user id=root; password=123456; database=hxw";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
MySqlDataAdapter da = new MySqlDataAdapter();实例化MySqlDataAdapter对象
或MySqlDataAdapter da = new MySqlDataAdapter("select * from login1",conn);
MySqlCommand com = conn.CreateCommand();
com.CommandText = "select * from login1";传递SQl语句命令
da.SelectCommand = com;
DataSet ds = new DataSet(); 实例化DataSet
da.Fill(ds,"employee"); 填充DataSet并给予命名
//ds.Tables["employee"];
dataGridView1.DataSource = ds.Tables["employee"]; 在dataGridView1中显示其中的数据
}
实例5增加
string connectionString = "server=127.0.0.1;user id=root; password=123456; database=hxw; pooling=false;charset=utf8";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = new MySqlCommand("select * from login1",conn);
DataSet ds = new DataSet();
da.Fill(ds, "login1");
int rowCount = ds.Tables[0].Rows.Count;
Console.WriteLine("读取数据库后的行数" + rowCount.ToString());
Console.WriteLine("请输入数据后直接按回车键");
string N="y";
while (N == "y"||N=="Y")
{
DataRow row = ds.Tables[0].NewRow();
Console.WriteLine("请输入班级序号");
row["stuclass"] = Console.ReadLine();
Console.WriteLine("请输入电话号码?");
row["stuphone"] = Console.ReadLine();
Console.WriteLine("请输入学生地址");
row["studizhi"] = Console.ReadLine();
Console.WriteLine("请输入学生年龄");
row["saages"] = Console.ReadLine();
Console.WriteLine("请输入学生性别");
row["stusex"] = Console.ReadLine();
Console.WriteLine("请输入学生名字");
row["stuname"] = Console.ReadLine();
//Console.WriteLine("请输入学生Id");
//row["Id"] = Console.ReadLine();
由于这里是设置为自增不用输入
ds.Tables[0].Rows.Add(row);
Console.WriteLine("继续增加请按y,结束输入请按n ");
N = Console.ReadLine();
}
MySqlCommandBuilder sqlBuilder = new MySqlCommandBuilder(da);
da.Update(ds, "login1");
Console.WriteLine("更新数据库后的行数"+ds.Tables[0].Rows.Count.ToString());
Console.WriteLine("成功插入数据库");
da.Dispose();
Console.Read();
}
这是实现数据的添加功能!代码不解释了自己看看!
主要的数据的显示控件dataGridView