已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ADO.Net_项目实战 实现登录功能:-界面:-数据库:-代码:View Code using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace _2_ADO.Net程序_登录 public partial class Form1 : Form public Form1() InitializeComponent(); private void IncErrorTimes() using (SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = update T_Login set ErrorTimes+=1; cmd.ExecuteNonQuery(); private void ResetErrorTimes() using (SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = update T_Login set ErrorTimes=0; cmd.ExecuteNonQuery(); private void btnLogin_Click(object sender, EventArgs e) string strUserName=txtUserName.Text.Trim(); string strPassWord=txtPassWord.Text.Trim(); using (SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = select * from T_Login; using (SqlDataReader reader = cmd.ExecuteReader() if (!reader.Read()/在使用Read()方法读取SqlDataReader类型的对象中的数据的时候,不能在当前conn这个数据库连接字符串的cmd命令下修改数据库中的数据,只能通过新建一个连接字符串来解决这个问题 MessageBox.Show(读取数据库数据出错!); else int ErrorTimes = reader.GetInt32(reader.GetOrdinal(ErrorTimes); if (ErrorTimes = 3) MessageBox.Show(错误次数过多,您的账户被锁定,程序将自动退出); Application.Exit(); return; string UserName = reader.GetString(reader.GetOrdinal(UserName); string PassWord = reader.GetString(reader.GetOrdinal(PassWord); if (UserName = strUserName & PassWord = strPassWord) MessageBox.Show(登录成功); ResetErrorTimes(); else MessageBox.Show(用户名或者密码错误); IncErrorTimes(); 通过OpenFileDialog控件,将文本文件中的数据读入到了数据库中:-界面:其实界面中除了图中我们可以看到的这个Button控件之外,还有一个OpenFileDialog控件,只是图中看不出来罢了。-数据库其实数据库的表就是两列数据,一列Name,一列Score-代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;namespace 文件数据导入数据库_使用到了OpenFileDialog控件_ public partial class Form1 : Form public Form1() InitializeComponent(); private void btnImport_Click(object sender, EventArgs e) if (ofdImport.ShowDialog() != DialogResult.OK) return; using (SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True)/将数据库连接字符串放在外面,可以大大地提高效率 conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = insert into T_StudentScores(name,score) values(name,score); using (FileStream stream = File.OpenRead(ofdImport.FileName) using (StreamReader reader = new StreamReader(stream) string line = ; while (line = reader.ReadLine() != null) string strs = line.Split(|); string fileName = strs0; int fileScore = Convert.ToInt32(strs1); cmd.Parameters.Clear();/由于这里使用的是同一个SqlCommand类型的对象,所以如果在每一次循环之前不清空的话,它的参数列表就会越来越多,远远不止2个,这和原来的占位符部分需要的2个参数个数不一致,程序就会出错。 cmd.Parameters.Add(new SqlParameter(name, fileName); cmd.Parameters.Add(new SqlParameter(score, fileScore); cmd.ExecuteNonQuery(); MessageBox.Show(导入数据成功); 对于代码需要讲解的部分,参考代码中的注释。将数据库中的数据写入到ComboBox控件中去:实现功能:省市选择实现步骤:一、数据库实现:实现了两个表:promary和mary表中有:proID和proName两列数据。分别存放省的id和名字。city表中有:proID、cityName、cityID三列数据。分别存放市的id、名字、对应省的id。注意:在VS中直接创建数据库,记得要加入相应的代码:string dataDir = AppDomain.CurrentDomain.BaseDirectory;if (dataDir.EndsWith(binDebug) | dataDir.EndsWith(binRelease) dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData(DataDirectory, dataDir);二、绘制界面:其实就是两个ComboBox控件,一个显示省的数据,一个显示市的数据。有一点需要注意:ComboBox控件的DisplayMember属性,这个属性的默认值是存储在该控件中的对象调用ToString方法之后的结果,而一个对象的ToString()方法之后,返回的其实就是这个对象的类名。如果我们在ComboBox控件的DisplayMember属性框中输入某一个对象的一个属性的话,那么在ComboBox控件中显示出来的就是这个属性调用ToString()方法之后的结果。例如:本例中,我们就将ComboBox控件的DisplayMember属性设置为了provinceName,正如同代码中第86行显示的,provinceName其实是Provinces类的实例对象的属性,我们将ComboBox控件的DisplayMember属性设置为它,产生的效果就是在ComboBox控件中显示出来的就是Provinces实例化对象的provinceName.ToString()之后显示的值。三、添加App.config文件,用来存储数据库连接字符串:代码如下: 四、实现代码: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Configuration;10 using System.Data.SqlClient;11 12 namespace 省市选择_版本2_将数据库连接字符串写到App.Config文件中13 14 public partial class Form1 : Form15 16 public Form1()17 18 InitializeComponent();19 20 21 / 22 / 程序运行,界面一加载,就将数据库中promary表中的数据按行依次读出来,存储到一个对象中,再将这个对象添加到ComboBox控件中去23 / 24 / 25 / 26 private void Form1_Load(object sender, EventArgs e)27 28 string connStr = ConfigurationManager.ConnectionStringsconnStr.ConnectionString;/得到数据库连接字符串,将它保存在connStr这个字符串变量中29 using (SqlConnection conn = new SqlConnection(connStr)/根据得到的数据库连接字符串,创建一个数据库连接对象30 31 conn.Open();32 using (SqlCommand cmd = conn.CreateCommand()33 34 cmd.CommandText = select * from promary;35 using (SqlDataReader reader = cmd.ExecuteReader()36 37 while (reader.Read()38 39 Provinces province = new Provinces();40 vinceID = reader.GetInt32(reader.GetOrdinal(proID);41 vinceName = reader.GetString(reader.GetOrdinal(proName);42 cmbProvinces.Items.Add(province); 43 44 45 46 47 48 49 / 50 / 一旦在省的ComboBox控件中选中某一个省市,就会将数据库city表中符合条件的数据显示到市的ComboBox控件中51 / 52 / 53 / 54 private void cmbProvinces_SelectedIndexChanged(object sender, EventArgs e)55 56 cmbCitys.Items.Clear();57 string connStr = ConfigurationManager.ConnectionStringsconnStr.ConnectionString;58 using (SqlConnection conn = new SqlConnection(connStr)59 60 conn.Open();61 using (SqlCommand cmd = conn.CreateCommand()62 63 cmd.CommandText = select * from city where proID=proID;64 Provinces province = (Provinces)cmbProvinces.SelectedItem;65 cmd.Parameters.Add(new SqlParameter(proID, vinceID);66 using (SqlDataReader reader = cmd.ExecuteReader()67 68 while (reader.Read()69 70 string cityName = reader.GetString(reader.GetOrdinal(cityName);71 cmbCitys.Items.Add(cityName);72 73 74 75 76 77 78 79 / 80 / 定义一个类,用来存储数据库中promary表中的数据。通过这个类创建的对象则绑定到省的ComboBox控件中去。81 / 同时,值得注意的是,在winform中自己定义的类一定要写在Form1这个类的后面,如果写到前面去了就会出错。 82 / 83 public class Provinces84 85 public int provinceID get; set; 86 public string provinceName get; set; 87 88 注意代码中的第28行,ConfigurationManager类不能直接引用它的命名空间,因为它相应的类定义的代码并没有引入到程序中,我们需要手动去引入它:在解决方案的引用文件夹处右键,选择添加引用,将System.configuration引用进来。通过FolderBrowserDialog控件,将一个文件夹中的所有文本文档数据读入到了数据库中:实现功能:手机号码归属地查询。主要代码如下,详细解释见代码中的注释:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Configuration;using System.Data.SqlClient;using System.IO;namespace 手机号码归属地查询 public partial class Form1 : Form public Form1() InitializeComponent(); / / 清空数据库中存在的数据 / / / private void btnDeleteDatas_Click(object sender, EventArgs e) string connStr = ConfigurationManager.ConnectionStringsconnStr.ConnectionString; using (SqlConnection conn = new SqlConnection(connStr) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = delete from T_PhoneNumbers; cmd.ExecuteNonQuery(); MessageBox.Show(数据库中的数据已清空); / / 通过FolderBrowserDialog控件,将一个文件夹中的所有以txt为后缀名的文件读入到数据库中。 / / / private void btnImportDatas_Click(object sender, EventArgs e) FolderBrowserDialog fbdPhoneNumbers = new FolderBrowserDialog();/实例化一个FolderBrowserDialog类,它的效果等同于使用可视化窗口拖拽一个FolderBrowserDialog控件。 if (fbdPhoneNumbers.ShowDialog() != DialogResult.OK) return; string connStr = ConfigurationManager.ConnectionStringsconnStr.ConnectionString; using (SqlConnection conn = new SqlConnection(connStr) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = insert into T_PhoneNumbers(StartNumber,EndNumber,CityName) values(StartNumber,EndNumber,CityName); string path = fbdPhoneNumbers.SelectedPath;/通过FolderBrowserDialog控件的对象的SelectedPath这个实例方法,获得所选取的文件夹的路径 string files = Directory.GetFiles(path, *.txt, SearchOption.AllDirectories);/通过Directory类型的静态方法GetFiles获得所选文件夹下符合条件的所有文件,将它们保存到一个字符串数组中。 foreach (string file in files)/通过循环遍历数组中的每一个文件 /获得某一个文件的文件名 string fileName = Path.GetFileNameWithoutExtension(file); /获得某一个文件的所有行的数据 string lines = File.ReadAllLines(file, Encoding.Default); foreach (string line in lines)/通过遍历获得所有行数据中的每一行数据,将它保存在一个字符串中 string strs = line.Split(-);/通过Split方法将每一行的字符串数据分割成多个字符串,将它们保存到一个字符串数组中 string strStartNumber = strs0; string strEndNumber = strs1; string strCityName = strs2; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter(StartNumber, strStartNumber); cmd.Parameters.Add(new SqlParameter(EndNumber, strEndNumber); cmd.Parameters.Add(new SqlParameter(CityName, fileName + strCityName); cmd.ExecuteNonQuery(); MessageBox.Show(导入数据成功); / / 查询输入的手机号码归属地,最后通过一个MessageBox显示出来 / / / private void btnSearch_Click(object sender, EventArgs e) string phoneNumber = txtPhoneNumber.Text.Trim(); string connStr = ConfigurationManager.ConnectionStringsconnStr.ConnectionString; using (SqlConnection conn = new SqlConnection(connStr) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = select * from T_PhoneNumbers where StartNumber=TempNumber; cmd.Parameters.Add(new SqlParameter(TempNumber, phoneNumber); using (SqlDataReader reader = cmd.ExecuteReader() if (reader.Read() string phoneAddress = reader.GetString(reader.GetOrdinal(CityName); MessageBox.Show(该手机号码归属地为: + phoneAddress); 一、在visual studio中调用数据库有两种方式:1、先在SQL Server Management Studio中建好数据库,然后将建好的数据库附加到visual studio中。使用这种方式不用加入额外的代码,就可以直接使用字符串连 接函数。2、直接在visual studio中创建数据库(使用内嵌mdf文件的形式)。使用这种方式需要加入额外的代码(将代码添加到Main()函数中),代码如下:View Code 1 string dataDir = AppDomain.CurrentDomain.BaseDirectory;2 if (dataDir.EndsWith(binDebug) | dataDir.EndsWith(binRelease)3 4 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;5 AppDomain.CurrentDomain.SetData(DataDirectory, dataDir);6 二、创建字符串处理函数,控制数据库:View Code 1 SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True);三、以上内容的一个完整示例:View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data.SqlClient; 6 7 namespace ConsoleApplication1 8 9 class Program10 11 static void Main(string args)12 13 string dataDir = AppDomain.CurrentDomain.BaseDirectory;14 if (dataDir.EndsWith(binDebug) | dataDir.EndsWith(binRelease)15 16 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;17 AppDomain.CurrentDomain.SetData(DataDirectory, dataDir);18 19 20 SqlConnection conn = new SqlConnection(Data Source=.SQLEXPRESS;AttachDBFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True);21 conn.Open();22 Console.WriteLine(打开数据库连接成功);23 24 25 四、以上内容完整示例的改进版:View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data.SqlClient; 6 7 namespace ConsoleApplication1 8 9 class Program10 11 static void Main(string args)12 13 string dataDir = AppDomain.CurrentDomain.BaseDirectory;14 if (dataDir.EndsWith(binDeb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧医疗体系构建可行性研究报告及总结分析
- 2025年乡村振兴示范基地建设项目可行性研究报告及总结分析
- 2025年人工智能健康助手项目可行性研究报告及总结分析
- 2025年教培行业线上线下融合项目可行性研究报告及总结分析
- 2025年智能物流行业技术应用与运营效率研究报告及未来发展趋势
- 2025年楼宇广告位投放合同
- 2025年社区绿化改造项目可行性研究报告及总结分析
- 2025年共享办公空间落地项目可行性研究报告及总结分析
- 2025年量子计算技术研发合作合同
- 2025年工业机器人应用编程理论考试复习题库 含答案
- 山西省食品安全突发事件应急预案
- 服刑人员心理健康讲座
- 幼儿园新教师舞蹈培训
- 《妊娠期恶心呕吐及妊娠剧吐管理指南(2024年)》解读
- DB50-T 1807-2025 承压设备射线检测缺陷自动识别系统评价方法
- 工程设计链篦机回转窑球团总包工程施工组织设计概述
- DB53-T 825-2017 拉线桁架式测风塔建设规范
- 2025年历届广西单招试题及答案
- 健身基础知识入门
- T∕CEC 442-2021 直流电缆载流量计算公式
- 检验科质量管理工作
评论
0/150
提交评论