目录:

正文:

回到顶部

前言:

  对于SQL Server的相关知识我都是在校的时候了解的,毕业到现在可以说完全没有再碰了,所谓三天不练手生,所以关于数据库这一块的知识我可以说完完全全还给老师了(emmmm,对不起我的学费呀),而且最尴尬的是数据库的知识可以说是软件开发一块很重要的东西了,不说特别精通,但是我这种完全还给老师的“人才”可能也是没谁了,所以!为了我曾经的学费,又重新捡起来学一下吧,目前本人供职于C#,所以文中所有的代码联系均为C#语言,另:文中的点都是基础知识复习(就我这水平也暂时别指望从这里看到很高深的技术了o(╯□╰)o)。

回到顶部

SQL Server基础准备

  SQL Server:Structured Query Language结构化查询语句。

1.新建数据库

  这里我就懒得说什么乱七八糟的定义了,SQL中重要的就是建表,表中重要的就是有主键,差不多就这两个点。然后我现在直接通过数据库建表:

  

2.在数据库中添加表

  然后再表中添加各种信息(在这里我将学生编号设置为主键):

       注意:一个表中一定要有一个主键!

  

  Tip:如果你弄好了这个信息,然后关闭了表的界面,突然想起有什么地方不对,想重新进去,那就右键点击你要修改的表名,然后选择“设计”就可以了。

3.向表中添加数据

  然后就是给表添加信息了:

  选中你刚刚保存的表,然后右键点击,选中“编辑前200行”即可。然后一个劲的往里面写数据就对了。

  

回到顶部

SQL Server与C#基础准备:

  Visual Studio连接数据库方法:

  通过在工具中找到“服务器资源管理器”,然后连接数据库,英文:server explore.

   

  在与数据库操作的代码中,我们需要加入using System.Data.SqlClient;命名空间。

回到顶部

实例解析:

1.C#连接数据

  代码:

 //表示一个到 SQL Server 数据库的打开的连接
SqlConnection cn = new SqlConnection("server=(local);database=db_10;Uid=sa;Pwd=");
//SQL Server语言,对数据库中表进行操作的语言
string cmdtx = "";
//与DataSet使用相关
SqlDataAdapter dataAdapter;
//内存中的数据库,用于暂存数据库中的数据
DataSet dataSet/* = new DataSet()*/;

  与数据库相连,首先新建一个SqlConnection实例,等到要连接数据库的时候就用cn.open()来打开数据。

  这里补充一下DataSet:

  DataSet可以当成是内存中的数据库,他不依赖于数据库而独立的数据集合。

  我是这么理解的:从数据库中读出来的数据暂时是保存在DataSet中的,等需要用的时候从DataSet中取出来。

  在实际应用中,DadaSet一般有三种使用方法:

  1. 把数据库中的数据通过DataAdapter对象填充到DataSet中;
  2. 通过DataAdapter对象操作DataSet实现更新数据库;
  3. 把XML数据流或者文本加载到DataSet.

2.查询特定列数据

  对数据库操作的语句:"SELECT 列名 FROM 表"

  代码:

 //10.01-1
private void select_Button_Click(object sender, EventArgs e)
{
    cmdtx = "SELECT 学生编号,学生姓名 FROM Table_1";
    //已经打开了在load中
    //cn.Open();
    dataSet = new DataSet();
    dataAdapter = new SqlDataAdapter(cmdtx, cn);
    dataAdapter.Fill(dataSet, "table");     showSpecialInfo_dataGridView.DataSource = dataSet.Tables[].DefaultView;
}

  Tip:开始的时候只有这么一个功能,我通过cn.Open();单独打开了数据库的时候没问题,后面因为添加了新的功能我在Load函数中又打开了一次,这个时候在运行就会报错,所以实践证明:只能打开一次数据库。

3.使用列别名

  对数据库操作的语句:"SELECT 列名,某一列名 AS 他对应的列别名 FROM 表"

  代码:

 //10.01-2
private void changeAlias_button_Click(object sender, EventArgs e)
{
    if (columnName_comboBox.Text == "" || alias_textBox.Text == "")
    {
        MessageBox.Show("ColumnName or Alias can't be empty!");
        return;
    }
    //我去,一个空格坑了我这么久
    cmdtx = "SELECT " + columnName_comboBox.Text + "," + columnName_comboBox.Text + " AS " + alias_textBox.Text.Trim() + " FROM Table_1";
    dataAdapter = new SqlDataAdapter(cmdtx, cn);
    //如果这里我没有重新实例化一个dataset就会调用之前在内存中的数据
    dataSet = new DataSet();
    dataAdapter.Fill(dataSet, "table");     changeAliasName_dataGridView.DataSource = dataSet.Tables[].DefaultView;
}

  Tip:这里遇到了两个问题:

  1. 因为一个空格我被坑到了,在SELECT语句中那里的空格,彼此之间一个都不能少,不然数据库读不出来,就报错了;
  2. 开始我在运用DataSet的时候,我没有重新实例化一个,搞不懂为什么显示的数据总是不对,后来尝试出来才发现要是不重新实例化DataSet,那么他就一直调用原来的数据。

4.在列上加入计算

  对数据库操作的语句: SELECT 列名,(A列+B列) AS 新的列 FROM 表"

  代码:

 //10.01-3
private void finalScore_button_Click(object sender, EventArgs e)
{
    cmdtx = "SELECT 学生编号,马克思成绩,高数成绩,(马克思成绩+高数成绩) AS 总成绩 FROM Table_3";
    dataAdapter = new SqlDataAdapter(cmdtx, cn);
    dataSet = new DataSet();
    dataAdapter.Fill(dataSet, "table");
    Sum_dataGridView.DataSource = dataSet.Tables[].DefaultView;
}

5.使用比较设置条件

  对数据库操作的语句:"SELECT 列名 FROM 表 WHERE 限制条件"

  代码:

 //10.01-4
private void scoreLine_button_Click(object sender, EventArgs e)
{
    if (line_comboBox.Text == "" || scoreLine_textBox.Text == "")
    {
        MessageBox.Show("Score can't be empty!");
        return;
    }
    dataSet = new DataSet();
    cmdtx = "SELECT * FROM Table_3 WHERE "+line_comboBox.Text+">"+scoreLine_textBox.Text;
    dataAdapter = new SqlDataAdapter(cmdtx, cn);
    dataAdapter.Fill(dataSet, "table");     line_dataGridView.DataSource = dataSet.Tables[].DefaultView;
}

回到顶部

总结:

  在我看来对数据库的操作的语句都比较不熟悉,加上可能有的时候涉及的各种表的名字很难记住,我的习惯是会再草稿纸上写出那句话,然后条件再慢慢往里面套,这样比较笨拙,但是对我来说比较稳当一点,嘻嘻。

SQLServer复习文档1(with C#)的更多相关文章

  1. Mybatis老手复习文档

    Mybatis学习笔记 再次学习Mybatis,日后,有时间会把这个文档更新,改的越来越好,然后,改成新手老手通用的文档 1.我的认识 Mybatis 是一个持久层框架,(之前 我虽然学了这个myba ...

  2. sqlserver打开对象资源管理器管理的帮助文档的快捷键

    sqlserver打开对象资源管理器管理的帮助文档的快捷键:Fn+F1

  3. sqlserver将数据库的数据导成excel文档方法

    sqlserver将数据库的数据导成excel文档方法 最近公司需要下载uniport的数据跟之前的数据进行对比,所以避免不了需要将数据库的数据导出来,把SQLServer表中的数据导出为Excel文 ...

  4. 6.JAVA基础复习——JAVA中文档注释与帮助文档的生成

    java中的文档注释:用于说明该类的功能作用方便他人使用关键词前需要加@符 用于类的注释 @author name 作者 @version v1.0 版本 …… 用于函数的注释 @param para ...

  5. sqlserver生成表结构文档的方法

    只说原理了,具体 可以自己使用程序去生成htm或word文档. 1.首先获取所有的表 SELECT name, id From sysobjects WHERE xtype = 'u' ORDER B ...

  6. Mysql、Oracle、SQLServer等数据库参考文档免费分享下载

    场景 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统 ...

  7. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...

  8. 一个SQLServer中JSON文档型数据的查询问题

    近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据? 例如有个调查问卷记录表,记录每个问题的答案. 其结构示意如下(横表设计) Id user date Q1_Answer Q2_An ...

  9. ABP文档 - Hangfire 集成

    文档目录 本节内容: 简介 集成 Hangfire 面板授权 简介 Hangfire是一个综合的后台作业管理器,可以在ABP里集成它替代默认的后台作业管理器,你可以为Hangfire使用相同的后台作业 ...

随机推荐

  1. web前端工程师全套教程免费分享

    这是我自己早前听课时整理的前端全套知识点,适用于初学者,也可以适用于中级的程序员,你们可以下载下来.我自认为还是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的 ...

  2. virualbox 搭建 otter

    前言 为了学习otter,上一篇我们讲到了 otter 必要软件的安装,参考:virualbox 安装 otter 必备软件,现在安装otter,相比官方文档,我们尽量简化安装步骤. virualbo ...

  3. poj 2566 Bound Found

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4384   Accepted: 1377   Spe ...

  4. Ipad,IPhone(矩阵求递推项+欧拉定理)

    Ipad,IPhone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  5. 入我新美大的Java后台开发面试题总结

    静儿最近在总结一些面试题,那是因为做什么事情都要认真.面试也一样,静儿作为新美大金融部门的面试官,负责任的告诉大家,下面的问题回答不上来,面试是过不了的.不过以下绝不是原题,你会发现自己实力不过硬,最 ...

  6. Akka(35): Http:Server side streaming

    在前面几篇讨论里我们都提到过:Akka-http是一项系统集成工具库.它是以数据交换的形式进行系统集成的.所以,Akka-http的核心功能应该是数据交换的实现了:应该能通过某种公开的数据格式和传输标 ...

  7. display、visibility、visible区别

    标签的隐藏可以有三种:display.visibility.服务器控件的visible. 显然,这三者都能起到隐藏与显示的效果,但是用途确完全不一样,请看用法与区别: <div style=&q ...

  8. web前端免费资源集

    web前端免费资源集 https://github.com/vhf/free-programming-books/blob/master/free-programming-books-zh.md

  9. zepto在操作dom的selected和checked属性时尽量使用prop方法

    zepto在操作dom的selected和checked属性时尽量使用prop方法.

  10. Java多线程synchronized关键字

    synchronized关键字代表着同步的意思,在Java中被synchronized修饰的有三种情况 1.同步代码块 //锁为objsynchronized(obj){ while(true){ i ...