工控最强王者
世上无难事,只怕有心人
级别: 略有小成
精华主题: 1 篇
发帖数量: 91 个
工控威望: 232 点
下载积分: 2123 分
在线时间: 85(小时)
注册时间: 2018-10-26
最后登录: 2024-05-16
查看工控最强王者的 主题 / 回贴
楼主  发表于: 2019-01-22 16:00
折腾了好久,蒙圈了很久,终于调用数据库成功,小白一个,把学习经验分享一下,,希望高手指点。。。

首先你要有C#基础吧,http://www.runoob.com/csharp/csharp-operators.html;其次你要知道数据库是干嘛用的,可以百度搜;

安装VS2017;这个是C#开发环境,也可以弄数据库;
  

然后就新建一个C#桌面应用,画一个按钮  

数据库怎么弄呢,https://jingyan.baidu.com/album/9f63fb91893ac3c8410f0e58.html?picindex=1

窗体应用怎么连接数据库呢  https://www.cnblogs.com/makqiq/p/5882351.html
下图是我设置的表,以及窗体查询数据库里的数据  
  
点击运行


  
下面附上程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApp4
{
    public partial class Form1 : Form //窗体1
    {
        private string connectString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\123\Documents\mydata.mdf;Integrated Security=True;Connect Timeout=30";//这个是连接数据库的字符串,右击你建立的数据库,属性,连接字符串复制过来,记得加上@哦

        public Form1()
        {
            InitializeComponent();//初始化
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)    //按钮点击事件
        {
            SqlConnection sqlCnt = new SqlConnection(connectString);//实例化sqlConnection
            sqlCnt.Open();   //打开数据库
            MessageBox.Show("数据库已打开");//打印数据库
            SqlCommand command = sqlCnt .CreateCommand();//实例化SqlCommand
          
          
            command.CommandType = CommandType.Text;    //这个是执行SQL语句
            command.CommandText = "SELECT*FROM dbo.[Table]"; //查询你建立的表格
            SqlDataReader reader = command.ExecuteReader();     //执行SQL,返回一个“流”
            while (reader.Read())
            {
                MessageBox.Show(Convert.ToString ( reader["id"])+ Convert.ToString(reader["姓名"]) + Convert.ToString(reader["年龄"]));  // 打印出每个用户的信息
            }



            sqlCnt.Close();//关闭数据库
            
          
        }
    }
}
[ 此帖被工控最强王者在2019-01-22 16:18重新编辑 ]
本帖最近评分记录:
  • 下载积分:+1(plcchina) 热心助人!
  • 下载积分:+2(阿萱子v)
  • 下载积分:+2(防弹武僧) 感谢分享!
  • 下载积分:+3(十月几川) 热心助人!
  • 下载积分:+5(myc2012) 好贴好贴!
  • 下载积分:+5(sbhd516)
  • 下载积分:+5(mk自动化)
  • 下载积分:+3(gadna9) 好帖
    814382100
    学无止境
    级别: 家园常客
    精华主题: 0
    发帖数量: 559 个
    工控威望: 725 点
    下载积分: 1861 分
    在线时间: 157(小时)
    注册时间: 2016-10-29
    最后登录: 2024-11-22
    查看814382100的 主题 / 回贴
    1楼  发表于: 2019-01-22 18:57
    点个赞谢谢分享
    walxyfsk
    级别: 探索解密
    精华主题: 0
    发帖数量: 66 个
    工控威望: 188 点
    下载积分: 654 分
    在线时间: 301(小时)
    注册时间: 2014-04-07
    最后登录: 2024-11-22
    查看walxyfsk的 主题 / 回贴
    2楼  发表于: 2019-01-23 08:48
    这个不错,我也正想学习这个
    秋意正浓
    级别: 网络英雄
    精华主题: 0
    发帖数量: 94 个
    工控威望: 7206 点
    下载积分: 80880 分
    在线时间: 869(小时)
    注册时间: 2015-05-30
    最后登录: 2024-11-22
    查看秋意正浓的 主题 / 回贴
    3楼  发表于: 2019-01-23 09:11
    谢谢!
    abadguy
    级别: 略有小成
    精华主题: 0
    发帖数量: 289 个
    工控威望: 483 点
    下载积分: 1506 分
    在线时间: 235(小时)
    注册时间: 2012-08-21
    最后登录: 2023-06-27
    查看abadguy的 主题 / 回贴
    4楼  发表于: 2019-01-23 09:52
    能不给你个赞吗?不能!
    你好啊朋友
    级别: 略有小成
    精华主题: 0
    发帖数量: 46 个
    工控威望: 388 点
    下载积分: 6776 分
    在线时间: 31(小时)
    注册时间: 2018-07-04
    最后登录: 2020-04-20
    查看你好啊朋友的 主题 / 回贴
    5楼  发表于: 2019-01-23 16:53
    虽说现在用不到,但以后指不定就想学了。经验互享,共同进步,老铁,狠赞,给你双击666!
    自由不是指想做什么就做什么,而是可以不做自己不想做的事
    等待后独行
    级别: 略有小成
    精华主题: 0
    发帖数量: 83 个
    工控威望: 312 点
    下载积分: 3280 分
    在线时间: 17(小时)
    注册时间: 2019-01-07
    最后登录: 2020-02-17
    查看等待后独行的 主题 / 回贴
    6楼  发表于: 2019-01-24 10:05
    666,多谢老铁
    daihoo81
    级别: 略有小成
    精华主题: 0
    发帖数量: 102 个
    工控威望: 354 点
    下载积分: 903 分
    在线时间: 585(小时)
    注册时间: 2011-03-04
    最后登录: 2024-11-17
    查看daihoo81的 主题 / 回贴
    7楼  发表于: 2019-01-25 09:51
    点个赞谢谢分享
    zw2940707
    级别: 探索解密
    精华主题: 0
    发帖数量: 23 个
    工控威望: 150 点
    下载积分: 551 分
    在线时间: 74(小时)
    注册时间: 2013-05-15
    最后登录: 2023-08-09
    查看zw2940707的 主题 / 回贴
    8楼  发表于: 2019-01-25 13:03
    太一、定义连接字符串,用来链接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("修改成功", "提示:");
            }
    楼主留言:
    int i =help.
    本帖最近评分记录:
  • 下载积分:+1(工控最强王者) 感谢分享!
    列仲宇
    级别: 探索解密
    精华主题: 0
    发帖数量: 75 个
    工控威望: 135 点
    下载积分: 685 分
    在线时间: 23(小时)
    注册时间: 2018-10-31
    最后登录: 2019-05-11
    查看列仲宇的 主题 / 回贴
    9楼  发表于: 2019-01-26 10:52
    学习了
    crgtom
    人生三宝:家庭,事业,健康。
    级别: 网络英雄

    精华主题: 0
    发帖数量: 1385 个
    工控威望: 9664 点
    下载积分: 96418 分
    在线时间: 931(小时)
    注册时间: 2009-09-21
    最后登录: 2024-11-21
    查看crgtom的 主题 / 回贴
    10楼  发表于: 2019-02-19 09:40
    技术是有时效性的,一旦错过了时效性,昔日人人求之不得的技术,最终会变成没有多少作用的垃圾!
    804759109
    无独有偶啊
    级别: 略有小成
    精华主题: 0
    发帖数量: 249 个
    工控威望: 362 点
    下载积分: 1142 分
    在线时间: 730(小时)
    注册时间: 2010-12-21
    最后登录: 2024-09-19
    查看804759109的 主题 / 回贴
    11楼  发表于: 2019-02-19 16:32
    太简单了吧
    楼主留言:
    我就是从一点不懂,开始懂一点点