目录:
正文:
对于 SQL Server 的相关知识我都是在校的时候了解的,毕业到现在可以说完全没有再碰了,所谓三天不练手生,所以关于数据库这一块的知识我可以说完完全全还给老师了(emmmm,对不起我的学费呀),而且最尴尬的是数据库的知识可以说是软件开发一块很重要的东西了,不说特别精通,但是我这种完全还给老师的 "人才" 可能也是没谁了,所以!为了我曾经的学费,又重新捡起来学一下吧,目前本人供职于 C#,所以文中所有的代码联系均为 C# 语言,另:文中的点都是基础知识复习(就我这水平也暂时别指望从这里看到很高深的技术了 o(╯□╰)o)。
SQL Server:Structured Query Language 结构化查询语句。
这里我就懒得说什么乱七八糟的定义了,SQL 中重要的就是建表,表中重要的就是有主键,差不多就这两个点。然后我现在直接通过数据库建表:
然后再表中添加各种信息(在这里我将学生编号设置为主键):
注意:一个表中一定要有一个主键!
Tip:如果你弄好了这个信息,然后关闭了表的界面,突然想起有什么地方不对,想重新进去,那就右键点击你要修改的表名,然后选择 "设计" 就可以了。
然后就是给表添加信息了:
选中你刚刚保存的表,然后右键点击,选中 "编辑前 200 行" 即可。然后一个劲的往里面写数据就对了。
Visual Studio 连接数据库方法:
通过在工具中找到 "服务器资源管理器",然后连接数据库,英文:server explore.
在与数据库操作的代码中,我们需要加入
命名空间。
- using System.Data.SqlClient;
代码:
- //表示一个到 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 一般有三种使用方法:
对数据库操作的语句:
- "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[0].DefaultView;
- }
Tip:开始的时候只有这么一个功能,我通过
单独打开了数据库的时候没问题,后面因为添加了新的功能我在 Load 函数中又打开了一次,这个时候在运行就会报错,所以实践证明:只能打开一次数据库。
- cn.Open();
对数据库操作的语句:
- "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[0].DefaultView;
- }
Tip:这里遇到了两个问题:
对数据库操作的语句:
- 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[0].DefaultView;
- }
对数据库操作的语句:
- "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[0].DefaultView;
- }
在我看来对数据库的操作的语句都比较不熟悉,加上可能有的时候涉及的各种表的名字很难记住,我的习惯是会再草稿纸上写出那句话,然后条件再慢慢往里面套,这样比较笨拙,但是对我来说比较稳当一点,嘻嘻。
来源: http://www.cnblogs.com/Aries-rong/p/8033976.html