VisualStudio2013内置SQLServer入门
最近做项目老大要求用到sqlserver,但是这项目的数据库只是本地演示用并不复杂,于是决定试试VisualStudio2013内置的SQLServer。对于这个东西的了解并没有多少,然后项目初学习的资料好少(可能是我搜索方式不对),这文章就当抛砖之作吧,话不多说现在开始:
首先我查阅了一些资料,但是很多都是sqlserver而不是vs内置的那个,所以似乎很难找到适合的资料,不过我找到了两篇MSDN也就是微软的简单入门的,上链接:
https://msdn.microsoft.com/zh-cn/library/ms233763.aspx
https://msdn.microsoft.com/zh-cn/library/ms171890.aspx
第一篇是教用vs内置的Service-based Database 建立一个简单的.mdf文件,这就是一个数据库文件(Microsoft SQL Server Database File),跟着教程做,创建的过程不想mysql一样是cmd输入命令(我没用过mysql的GUI),都是在GUI上操作的
第二篇是用winform去连接第一篇创建的.mdf文件,然后添加完后可以直接以控件形式显示,但是教程就到此为止了,我要的并不是直接显示数据啊,我需要的是在C#的WPF中实现对数据库的增删改查啊,就是输入个id,从数据库中找到个对应名字给我之类的操作,所以还要继续找方法。
然后我找到了这篇文章:
http://wulin9005.blog.163.com/blog/static/13239748820133135526616/
作者跟我一样懒得去下sqlserver(逃~),然后这里教会了我在vs中连接自己电脑作为server,不过第二步大家的服务器名可能不一样,我的解决方法是:
在VS--TOOLS--Options(最下)中,搜索sql server
点Database Tools--Data Connections
SQL Server Instance Name下方的TextBox中就是你电脑Server的名字,我没改hhh
继续进行第三步就能得到名为"master"的数据库,
接着就在Tables处右键添加新表,具体如下:
可以跟我一样也可以参考microsoft的第一个链接,这样表就创建完毕了
然后是对表添加数据,对Tables下的tb_card右键Show Table Data(显示表数据),然后自由添加
好的这样就添加完数据了
接下来就是如何在代码中取得数据了,
首先在VS的VIEW--Other windows--Data Sources 中点击Add new Data Source,在Choose a Data Source Type中选Database-->next,在choose a database model中选择Dataset-->next,在Choose Your Data Connection中点击右边的New Connection,在弹出的Add Connection中点击Data source右边的按键change,然后选中Microsoft SQL Server并点击OK:
然后会有add Connection弹框如下,ServerName上面提到了用自己的,输入完可以用左下角的Test试一下连接:
成功之后就会回到choose your data connection,然后下拉框就多了一个可以选的:
选中并next,next,到了Choose your database objects,勾选tables,然后Finish,剩下都确认就行
然后server的Data Connections就会出现:
连接也完成了,最后就是创建WPF
比较简陋hhh,三个textbox分别对应cardid、username、cardType,
combobox用来选择数据库,右边btn_refresh用来首次连接并刷新数据库列表到combobox中:
#region 按键刷新数据库列表 private void btn_refresh_Click(object sender, RoutedEventArgs e) { DataTable t = new System.Data.DataTable(); string con = "server=(LocalDB)\\v11.0;database=master;integrated security=true"; try { using (SqlConnection myCon = new SqlConnection(con)) { myCon.Open(); MessageBox.Show("打开数据库成功"); string sql = "select * from sys.databases "; using (SqlCommand cm = new SqlCommand(sql, myCon)) { SqlDataAdapter a = new SqlDataAdapter(cm); a.Fill(t); foreach (DataRow r in t.Rows) { cb_database.Items.Add(r["name"].ToString()); } } } } catch (Exception ex) { MessageBox.Show("数据库打开失败,详细信息:" + ex.ToString()); } } #endregion
刷新完成后,在第一个textbox输入123,然后点击btn_open,另外两个textbox将会显示对应数据,btn_open代码如下:
#region open点击 private void Button_Click(object sender, RoutedEventArgs e) { try { if (cb_database.Text.Trim().Length > 0) { string con = "server=(LocalDB)\\v11.0;database=" + cb_database.Text.Trim() + ";integrated security=true"; using (SqlConnection myCon = new SqlConnection(con)) { string sql = "select userName,cardType from tb_card where cardID='" + tb_id.Text + "'"; using (SqlCommand cmd = new SqlCommand(sql, myCon)) { myCon.Open(); MessageBox.Show("连接数据库成功" + ",ServerVersion:" + myCon.ServerVersion + ";DataSource" + myCon.DataSource); using (SqlDataReader sdr = cmd.ExecuteReader()) { if (sdr.Read()) { string userName = sdr.GetString(0).ToString(); string cardType = sdr.GetString(1).ToString(); tb_name.Text = userName; tb_type.Text = cardType; } else { MessageBox.Show("gg"); } } } } } else { MessageBox.Show("请选择要连接的数据库"); } } catch (Exception ex) { MessageBox.Show("数据库连接失败,详细信息:" + ex.ToString()); } } #endregion
完结撒花~如果有神马意见建议欢迎留言谢谢~