zoukankan      html  css  js  c++  java
  • c#操作数据库的增删改查语句及DataGridView简单使用

    下面是要用户名和密码连接数据库的操作:

    一、定义连接字符串,用来链接SQL Server

    string str_con = "server=.(服务器名称一般为 . );database=WordBook(数据库名称);uid=sa(服务器登录名);pwd=123(服务器密码)";

    二、有了链接字符串之后,开始数据库操作

     1、数据库查询

    定义了一个查询方法,用来调用:

    public DataSet queryDatabase(string sql)    //sql是查询语句
            {
                //储存数据的工具初始化
                DataSet ds = new DataSet();
                //相当于链接数据库的一个工具类(连接字符串)
                using (SqlConnection con = new SqlConnection(str_con))
                {
                    con.Open();  //打开
                    //用SqlConnection工具链接数据库,在通过sql查询语句查询结果现存入sql适配器
                    SqlDataAdapter sda = new SqlDataAdapter(sql,con);   //(查询语句和连接工具)
                    sda.Fill(ds);    //将适配器数据存入DataSet工具中
                    con.Close();   //用完关闭SqlConnection工具
                    return ds;
                }
            }

    在需要查询数据库的地方调用此方法:

    private void query() {
                //查询WordBook表中,book_key字段数值为7的那一行数据
                //string sql = "select * from Word_Book where book_key='7'";

                string sql = "select * from Word_Book ";     //查询全表
                DataSet ds = help.queryDatabase(sql);        //查询到数据
                DataTable dt = ds.Tables[0];                       //把查到的数据存入数据表中
                sqlDataResult.DataSource = dt;                  //把数据赋值给gridView展示(全表)

                // string str=dt.Rows[0][1].ToString();//查找表中某一个内容
                // MessageBox.Show(str);
            }

    2、数据库添加、删除、修改

    C#中数据库的添加、删除、修改用的是同断代码,所以定义了一个方法,用来调用:

    public int changeSqlData(String sql)
            {
                using(SqlConnection con=new SqlConnection(str_con))
                {
                    con.Open();
                    //操作数据库的工具SqlCommand
                    SqlCommand cmd = new SqlCommand(sql, con);//(操作语句和链接工具)
                    int i=cmd.ExecuteNonQuery();//执行操作返回影响行数()
                    con.Close();
                    return i;
                }
            }

    在需要操作数据库的地方调用此方法:

    ①数据库添加:

     private void btn_add_Click(object sender, EventArgs e)
            {
                //sql添加数据 insert into 表名(字段,字段...) values(‘内容’,‘内容’...)
                string sql = "insert into Word_Book(book_word_CN,book_word_JP,book_word_Roma,book_nominal," +
                    "book_gloze) values('" + book_word_CN.Text.Trim()+"','"+ book_word_JP .Text.Trim() + "','"
                    + book_word_Roma .Text.Trim() + "','"+ book_nominal.Text.Trim() + "','" + book_gloze.Text.Trim() + "')";
                    int i=help.changeSqlData(sql);
                if (i == 0) MessageBox.Show("添加失败", "提示:");
                else MessageBox.Show("添加成功", "提示:");
            }

    ②数据库删除:

     private void btn_delete_Click(object sender, EventArgs e)
            {
                //根据同个字段中不同内容删除多行
                //delete from Word_Book where book_key in (1,2,3)

                //sql删除数据delete 表名 where 字段='内容'单个条件用or链接,多个条件用and链接
                string sql = "delete from Word_Book where book_key='"+book_key.Text.Trim()+"'";
                int i=help.changeSqlData(sql);
                if (i == 0) MessageBox.Show("删除失败", "提示:");
                else MessageBox.Show("删除成功", "提示:");
            }

    ②数据库更新:

     private void btn_update_Click(object sender, EventArgs e)
            {
                //根据条件修改多个字段内容
                //update 表名 set 字段='内容', 字段='内容' where 条件字段='内容'
                string sql = "update Word_Book set book_word_CN='"+book_word_CN.Text.Trim()+
                    "', book_word_JP='"+book_word_JP.Text.Trim()+"'where book_key='" + book_key.Text.Trim()+"'";
                int i = help.changeSqlData(sql);
                if (i == 0) MessageBox.Show("修改失败", "提示:");
                else MessageBox.Show("修改成功", "提示:");
            }

    3、数据库事务操作数据库

    用数据库事务相当于把数据库操作捆绑执行,只要其中一条sql语句失败,直接返回,不进行数据库操作,只有全部执行正确,才会更新数据库。

    定义了一个查询方法,用来调用:

     public bool openTrans(List<String> lst)
            {
                using (SqlConnection con=new SqlConnection(str_con))
                {
                    con.Open();
                    //开启事务
                    SqlTransaction trans = con.BeginTransaction();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = con;//添加链接工具
                    cmd.Transaction = trans;//添加事务
                    try
                    {
                        for (int i = 0; i < lst.Count; i++)
                        {
                            string sql=lst[i].ToString();//获取sql语句
                            cmd.CommandText = sql;//添加sql语句
                            cmd.ExecuteNonQuery();//执行
                        }
                        trans.Commit();//执行完成之后提交
                        return true;
                    }
                    catch(Exception e)
                    {
                        //执行sql语句失败,事务回滚
                        trans.Rollback();
                        return false;
                    }
                    finally
                    {
                        con.Close();
                    }
                }
            }

    在需要操作数据库的地方调用此方法:

    private void transql_Click(object sender, EventArgs e)
            {
                List<string> lst = new List<string>();
                lst.Add("update Word_Book set book_word_CN='" + book_word_CN.Text.Trim() +
                    "', book_word_JP='" + book_word_JP.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
                lst.Add("update Word_Book set book_word_Roma='" + book_word_Roma.Text.Trim() +
                   "', book_nominal='" + book_nominal.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
                Boolean isOk= help.openTrans(lst);
                if (!isOk) MessageBox.Show("修改失败", "提示:");
                else MessageBox.Show("修改成功", "提示:");
            }

    C#增删改查操作完成,想要方便可以自定义一个类,把所有的方法写在里面,当有用到的时候可以初始化该类的实例用来调用类里的方法

    在VS2012中新建一个Windows窗口应用程序,并在Form中放置DataGridView和Button两个控件,在Button的单击响应事件中连接数据库:

    private void button1_Click(object sender, EventArgs e)
    {
        String connsql = "server=.;database=MyDBName;integrated security=SSPI"; // 数据库连接字符串,database设置为自己的数据库名,以Windows身份验证
                
        try
        {
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connsql;
                conn.Open(); // 打开数据库连接
    
                String sql = "select * from student"; // 查询语句
    
                SqlDataAdapter myda = new SqlDataAdapter(sql, conn); // 实例化适配器
    
                DataTable dt = new DataTable(); // 实例化数据表
                myda.Fill(dt); // 保存数据 
    
                dataGridView1.DataSource = dt; // 设置到DataGridView中
    
                conn.Close(); // 关闭数据库连接
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("错误信息:" + ex.Message, "出现错误");
        }
    }

    该类中封装了关于数据库连接和操作的方法,各个功能模块在需进行数据库操作时只需调用相应的函数:

    //引入的命名空间
    using System.Data.SqlClient;//用于SQL Sever数据访问的命名空间
    using System.Data;               //DataSet类的命名空间
    using System.Windows.Forms;  //DataGridView控件类的命名空间
    
    
    //执行指定的SQL命令语句(insert,delete,update等),并返回命令所影响的行数
    public static int executeCommand(string sqlStr)
    {
        SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接(字符串中是我个人的数据库信息)
        sqlConnection1.Open();      //打开数据库连接
        SqlCommand sqlCommand1 = new SqlCommand(sqlStr, sqlConnection1);  //执行SQL命令
        int Succnum = sqlCommand1.ExecuteNonQuery();
        return Succnum;
    }
    
    //查询(select)指定的数据记录(多行多列),并填充到数据控件DataGridView中
    public static void queryDataToGrid(string sqlStr, DataGridView dataGridView1)
    {
        SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlStr, sqlConnection1);//利用已创建好的sqlConnection1,创建数据适配器sqlDataAdapter1
        DataSet dataSet1 = new DataSet();  //创建数据集对象
        sqlDataAdapter1.Fill(dataSet1);    //执行查询,查询的结果存放在数据集里
        dataGridView1.DataSource = dataSet1.Tables[0]; //把数据集中的查询结果绑定到dataGridView1中
    }
    
    //查询(select)指定的数据(单个数据,假设为string类型),并返回
    public static string queryData(string sqlStr)
    {
        SqlConnection sqlConnection1 = new SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//创建数据库连接
        SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlStr, sqlConnection1);//利用已创建好的sqlConnection1,创建数据适配器sqlDataAdapter1
        DataSet dataSet1 = new DataSet();  //创建数据集对象
        sqlDataAdapter1.Fill(dataSet1);    //执行查询,查询的结果存放在数据集里
        return dataSet1.Tables[0].Rows[0]["列名"].ToString(); //把查询结果的第一行指定列下的数据以string类型返回
    }
    View Code

    当在各个功能模块中需要进行数据库操作时,只需指定要执行的SQL语句,调用一下数据库工具类中的方法即可实现,下面给了一些基本的的SQL操作(单表)

    //
    sqlStr = "insert into 表名( 列名1 , 列名2 )values( 插入值1 , 插入值2 )";
    //执行指定的SQL命令语句,并返回命令所影响的行数
    int Succnum = MyTool.executeCommand(sqlStr); 
    if (Succnum > 0) MessageBox.Show("录入成功");
    
    //
    sqlStr = "delete from 表名 where 删除条件";
    int Succnum = MyTool.executeCommand(sqlStr); 
    if (Succnum > 0) MessageBox.Show("删除成功");
    
    //
    sqlStr = "update 表名 set 列名1 = 更新值1 , 列名2 = 更新值2";
    int Succnum = MyTool.executeCommand(sqlStr); 
    if (Succnum > 0) MessageBox.Show("更新成功");
    
    //查一组数据
    sqlStr = "select 列名1 , 列名2 from 表名 where 查询表达式";
    MyTool.queryDataToGrid(sqlStr, dataGridView1);//填充到数据控件DataGridView中
    
    //查单个数据
    sqlStr = "select 列名 from 表名 where 查询表达式";
    textBox1.Text = MyTool.queryData(sqlStr);//填充到文本框textBox1中
    View Code
  • 相关阅读:
    windows中administrator 和 administrators两个账户的区别
    如何去掉打印网页时自带的网址以及页码等内容
    Oracle左连接,右连接
    oracle服务器本地能够登录但是局域网内其他机器不能访问的解决方法
    错误Name node is in safe mode的解决方法
    oracle数据库中对varchar类型求max的解决方法
    JBoss中配置数据源出现错误:“Failed to register driver for: com.mysql.jdbc.Driver”的解决方法
    学习junit和hamcrest的使用
    Ubuntu10.10如何给用户添加sudo权限
    ORACLE 9i卸载并重新安装
  • 原文地址:https://www.cnblogs.com/liuqifeng/p/9145815.html
Copyright © 2011-2022 走看看