C#WinForm连接本地或远程Sql数据库,并进行简单操作。
2016-06-10 19:28
721 查看
在学习C#课程时,看到课本有相关内容的介绍。想起如果自己能做一个操作数据库的小软件应该不错。
所需要的知识基础就是sql的一些语句和C#的ADO.NET。
主要就是Connection、Command、DataReader和Dataset,还有就是DataAdapter等封装好的类。
还有就是一些基本控件的用法。如dataGridView,comboBox,button等。
做的过程中,遇到挺多问题de,解决之后能学到很多东西。
1.
使用ADO.NET访问数据库,首先就是要建立与数据库的连接。在学习的过程中,发现整个小软件要做很多次与数据库的连接和断开。所以这部分是最基础的内容。
连接数据库,主要是使用SqlConnection类,创建该类的对象,用open()方法即可打开与数据库的连接。在连接中,要注意的就是创建SqlConnection对象时的连接字符。
更改连接字符,即可连接不同的数据库。在写这个小软件的过程中,将连接字符的赋值和选择封装成一个类,因为要用到很多次。
下面是自己写的连接字符串的类。
2.与数据库建立链接之后,就是对数据库的一些操作。主要用SqlCommand类来实现。SqlCommand 和 DatdSet 的使用可以自行百度一下。
3.还有就是使用DataSet。DataSet可以作为非连接的数据缓存,他独立于数据源,将数据库的数据加载到DataSet中,为数据的操作做准备。
4.最后,就是使用DataAdapter,他是数据集DataSet与数据源之间的桥梁。例如,实现查询功能:
自己做了个如下的登陆界面。该界面可以选择连接本地或者远程的数据库,输入对应信息时,就可以连接数据库了,登录界面要注意对用户的输入进行合法性的校验。
登陆后,主界面如下,有一些基本功能,如查询,修改和删除数据 数据库的备份与分离,附加数据库等。这些功能的实现参考了一下别人的代码。此外还有一些无聊的小工具。
这部分的内容就学到这里啦,明天开始复习tcp/ip 快考试了。
如果有人也在学连接数据库的,大家一起交流一下 。
需要的 联系我微信:hsk710685973jq (大家一起学习)
下面是我写的登陆界面的代码。可以选择连接本地或远程数据库。欢迎大家交流,教一下我这个菜鸟。
所需要的知识基础就是sql的一些语句和C#的ADO.NET。
主要就是Connection、Command、DataReader和Dataset,还有就是DataAdapter等封装好的类。
还有就是一些基本控件的用法。如dataGridView,comboBox,button等。
做的过程中,遇到挺多问题de,解决之后能学到很多东西。
1.
使用ADO.NET访问数据库,首先就是要建立与数据库的连接。在学习的过程中,发现整个小软件要做很多次与数据库的连接和断开。所以这部分是最基础的内容。
连接数据库,主要是使用SqlConnection类,创建该类的对象,用open()方法即可打开与数据库的连接。在连接中,要注意的就是创建SqlConnection对象时的连接字符。
更改连接字符,即可连接不同的数据库。在写这个小软件的过程中,将连接字符的赋值和选择封装成一个类,因为要用到很多次。
下面是自己写的连接字符串的类。
namespace WindowsFormsApplication1 { class connect { String dbName; //数据库名称: String userName; String password; int flag; String sql1; String sql2; String sql3; String serverAddress1; public string Connect() { userName = Form7.userName1; //Form7是登陆界面,从登陆界面获得账号,密码 password = Form7.password1; // flag = Form7.check; //flag 在这里用于标记用户选的是那种验证登陆方式 serverAddress1 = usersAdd.serverAddress; dbName = Form7.dbName1; sql1 = "server=" + serverAddress1 + ";database=" + dbName + ";Uid=" + userName + ";Pwd=" + password + ";"; // SQL账号验证 sql2 = "server=.;database=" + dbName + ";Trusted_Connection=SSPI"; // windows身份验证 if (flag == 0) // 0是 windows身份验证 1是SQL账号验证 { sql3 = sql2; } else { sql3 = sql1; } return sql3; }
2.与数据库建立链接之后,就是对数据库的一些操作。主要用SqlCommand类来实现。SqlCommand 和 DatdSet 的使用可以自行百度一下。
3.还有就是使用DataSet。DataSet可以作为非连接的数据缓存,他独立于数据源,将数据库的数据加载到DataSet中,为数据的操作做准备。
4.最后,就是使用DataAdapter,他是数据集DataSet与数据源之间的桥梁。例如,实现查询功能:
SqlConnection con = new SqlConnection(sql3); //sql3是数据库链接字符 SqlDataAdapter sda = new SqlDataAdapter(sql_3, con); //sql_3是查询 限制语句 DataSet ds = new DataSet(); sda.Fill(ds, table_name); //装载主体功能的基本的知识就是以上这些。
自己做了个如下的登陆界面。该界面可以选择连接本地或者远程的数据库,输入对应信息时,就可以连接数据库了,登录界面要注意对用户的输入进行合法性的校验。
登陆后,主界面如下,有一些基本功能,如查询,修改和删除数据 数据库的备份与分离,附加数据库等。这些功能的实现参考了一下别人的代码。此外还有一些无聊的小工具。
这部分的内容就学到这里啦,明天开始复习tcp/ip 快考试了。
如果有人也在学连接数据库的,大家一起交流一下 。
需要的 联系我微信:hsk710685973jq (大家一起学习)
下面是我写的登陆界面的代码。可以选择连接本地或远程数据库。欢迎大家交流,教一下我这个菜鸟。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; //用于连接sql数据库 using System.Threading; namespace WindowsFormsApplication1 { public partial class Form7 : Form { public static int check = 0; //标记 用户选了 sql or windows 认证 public static string strCon = ""; public static string userName1 = ""; public static string password1 = ""; public static string dbName1 = ""; public int thread_control = 0; //用于监视文本框线程控制变量 public Form7() { InitializeComponent(); } private void Form7_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; textBox1.Text = "(local)"; Thread th4 = new Thread(textBox1_monitor); //监控ip框的线程 th4.IsBackground = true; th4.Start(); } private void button2_Click(object sender, EventArgs t) { thread_control = 1; if (checkBox1.Checked == true) // check 1 是勾选 windows认证的 { strCon = "server=" + textBox1.Text + ";Initial Catalog =" + comboBox1.Text + ";Integrated Security=SSPI;Connection Timeout = 5;"; } else if (checkBox2.Checked == true) // 2 s是用密码 { strCon = "server=" + textBox1.Text + ";Database=" + comboBox1.Text + ";Uid=" + textBox2.Text + ";Pwd=" + textBox3.Text + ";Connection Timeout = 5;"; } //textBox2.Text, textBox3.Text, 分别是用户名 加密码 SqlConnection sqlcon = new SqlConnection(strCon); try { //记录账号密码 userName1 = textBox2.Text; password1 = textBox3.Text; dbName1 = comboBox1.Text; sqlcon.Open(); usersAdd windows7 = new usersAdd(dbName1, textBox1.Text); //这是 下一个窗口 windows7.Show(); this.Hide(); } catch (Exception e) { MessageBox.Show("请输入你要连接的数据库的信息\n " + "计算机说: " + e.Message); } sqlcon.Close(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { checkBox1.Checked = true; checkBox2.Checked = false; } check = 0; textBox2.Text = textBox3.Text = null; if (checkBox1.Checked) { textBox2.Enabled = textBox3.Enabled = 确定.Enabled = false; checkBox2.Checked = false; Thread th = new Thread(Win); th.IsBackground = true; th.Start(); } } public void Win() { string str = "server=" + textBox1.Text + ";database=master;Integrated Security=SSPI;Connection Timeout = 5;"; comboBox1.DataSource = getTable(str); comboBox1.DisplayMember = "name"; comboBox1.ValueMember = "name"; } private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (checkBox2.Checked) { checkBox1.Checked = false; checkBox2.Checked = true; } check = 1; textBox2.Enabled = textBox3.Enabled = 确定.Enabled = true; textBox2.Focus(); comboBox1.Text = null; } private void button1_Click(object sender, EventArgs e) { Thread th1 = new Thread(SQL); th1.IsBackground = true; th1.Start(); } public void SQL() { if (check == 1) { string str = "server=" + textBox1.Text + ";database=master;Uid=" + textBox2.Text + ";Pwd=" + textBox3.Text + ";Connection Timeout = 3;"; comboBox1.DataSource = getTable(str); } else { MessageBox.Show("请勾选SQL身份验证选项"); } comboBox1.DisplayMember = "name"; comboBox1.ValueMember = "name"; } public DataTable getTable(string str) { try { SqlConnection sqlcon = new SqlConnection(str); SqlDataAdapter da = new SqlDataAdapter("select name from sysdatabases ", sqlcon); DataTable dt = new DataTable("sysdatabases"); da.Fill(dt); return dt; } catch (Exception hsk) { MessageBox.Show("您输入的账号密码信息可能有误\n" + "具体错误是:" + hsk.Message); return null; } } public void textBox1_monitor() //用于限制 ip登陆时 误选 windows认证 { try { while (thread_control != 1) { if (textBox1.Text != "(local)" & textBox1.Text != "") { checkBox1.Enabled = false; } else { checkBox1.Enabled = true; } } } catch { } } private void Form7_FormClosed(object sender, FormClosedEventArgs e) { thread_control = 0; //让监视文本框的线程退出死循环 Application.Exit(); } private void checkBox2_Click(object sender, EventArgs e) { check = 1; } private void pictureBox1_Click(object sender, EventArgs e) { Form2 window1 = new Form2(); window1.Show(); this.Hide(); } } }
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- winform绑定快捷键的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- 学习Winform文本类控件(Label、Button、TextBox)
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法