zoukankan      html  css  js  c++  java
  • 数据库的小案例(一):文本文件信息导入数据库

    从文本文件添加到数据库用户表的记录(有两个文件:frmMain.cs  SqlHelper.cs  )

    //FrmMain.cs
    //作者:Me
    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 数据库的链接 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnOpenFile_Click(object sender, EventArgs e) { #region 写一个程序,要求:uName和uPass从文件导入,并将其插入到数据库WebSite的UserInfo表中 //打开文件对话框 OpenFileDialog ofd = new OpenFileDialog(); //指定ofd的过滤器 ofd.Filter = "文本文件|*.txt|所有文件|*.*"; //指定ofd的是否多选择属性 ofd.Multiselect = false; //指定ofd的初始化目录 ofd.InitialDirectory = @"D:"; //指定ofd的标题 ofd.Title = "请选择要打开的文本文件"; if (ofd.ShowDialog() == DialogResult.OK) { txtFileName.Text = ofd.FileName; } #endregion } /// <summary> /// 需求增加 /// 1.增加一个导入成功后弹出的统计对话框 /// 2.增加判断如果,用户选择的是一个非法的文本文件,那么让Insert方法返回false /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnImportData_Click(object sender, EventArgs e) { //判断文本框是否有值 并且 文件是否存在 并且 值是否为一个txt文件的路径 if (String.IsNullOrEmpty(txtFileName.Text) || !File.Exists(txtFileName.Text) || !String.Equals(txtFileName.Text.Split('.')[txtFileName.Text.Split('.').Length - 1], "txt")) { MessageBox.Show("文件错误,请重新导入!"); return; } //读取文本文件的数据,并循环导入 string[] allLines = File.ReadAllLines(txtFileName.Text.Trim(), Encoding.Default); //定义一个判断是否全部导入的计数器 int totalNumber = allLines.Length; int hasImportedNumber = 0; foreach (string str in allLines) { string[] eachLinesArray = str.Split('|'); //传入要插入的用户名和密码 if (str.IndexOf('|') != -1) { //eachLines{string[1]} 表示的是eachLines是一个长度为1的字符串数组(也就是说只有eachLines[1]的位置有值) if (SqlHelper.Insert(eachLinesArray[0], eachLinesArray[1])) { hasImportedNumber++; } } } MessageBox.Show(String.Format("总共:{0}条 成功导入:{1}条 成功率:{2}% ", totalNumber, hasImportedNumber, hasImportedNumber/(float)totalNumber*100)); } private void btnOutPut_Click(object sender, EventArgs e) { //创建保存文本框对象 SaveFileDialog sfd = new SaveFileDialog(); //设置默认的保存格式,这里只有txt sfd.Filter = "文本文件(*.txt)|*.txt"; //设置标题 sfd.Title = "请选择要保存的文件"; //当点击确定,获取路径 if (sfd.ShowDialog() == DialogResult.OK) { //创建一个空的泛型集合 List<string> list = new List<string>(); //使用查询函数将查询结果添加到泛型集合中 SqlHelper.DataSelect(list); //将泛型集合的数组写入文件 File.WriteAllLines(sfd.FileName, list); } } }


    }
    //SqlHelper.cs
    //作者:Me
    using
    System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Windows.Forms; namespace 数据库的链接 { /// <summary> /// SqlHelper用于执行数据库增删改查的操作 /// </summary> class SqlHelper { private static string sqlStr = "server=.;database=WebSite;uid=sa;pwd=123456"; /// <summary> /// 向数据库插入记录 /// </summary> /// <param name="name">待插入用户名</param> /// <param name="pass">待插入密码</param> /// <returns></returns> public static bool Insert(string name, string pass) { using (SqlConnection conn = new SqlConnection(sqlStr)) { using (SqlCommand cmd = conn.CreateCommand()) { bool res = false; cmd.CommandText = "insert UserInfo values (@name, @pass)"; cmd.Parameters.Add(new SqlParameter("@name", name)); cmd.Parameters.Add(new SqlParameter("@pass", pass)); try { conn.Open(); res = cmd.ExecuteNonQuery() > 0; } catch (Exception ex) { MessageBox.Show(ex.Message); } return res; } } } public static void DataSelect(List<string> list) { using (SqlConnection conn = new SqlConnection(sqlStr)) { using (SqlCommand cmd = conn.CreateCommand()) { SqlDataReader dr = null; cmd.CommandText = "select uName,uPass from UserInfo"; try { conn.Open(); dr = cmd.ExecuteReader(); } catch (Exception ex) { MessageBox.Show("数据库错误: "+ex.Message); return; } if (dr.HasRows) { while (dr.Read()) { list.Add( String.Concat(dr[0].ToString(), "|", dr[1].ToString()) ); } } } } } } }

    文本文件D:user.txt ,内容:

    张三1|123
    张三2 123
    张三3 123
    张三4|123
    张三5|123
    张三6|123
    张三7|123
    张三8|123
    张三9|123
    张三10|123
    张三11|123
    张三12|123
    张三13|123
    张三14|123
    张三15|123

    思路简介

    1.点击“打开文件”从openFileDialog打开一个文件,并将路径存到txtFileName文本框中

    2.点击“导入数据”按钮,首先检查文本框文件路径字符串的合法性,然后在循环中使用Insert()将数据一条条插入到数据库中

    3.Insert(string name,string pass)方法,每调用一次,就将参数中的name和pass插到指定的数据表UserInfo中

    4.点击“导出数据”,即打开SaveFileDialog,预先定义一个泛型集合,然后将集合的引用传递给DataSelect()方法,方法内部通过dr对象的遍历,将每行数据写入集合中

    各种空间的命名和属性设置

    控件 属性 事件
    btnOpenFile

    Text:打开文件

    btnOpenFile_Click
    btnImportFile Text:导入数据 btnImportData_Click
    btnOutPut Text:导出数据 btnOutPut_Click
    txtFileName    
  • 相关阅读:
    Licp
    [持续更新]Python 笔记
    求 LCA 的三种方法
    一些题目(4)
    欧几里得算法与扩展欧几里得算法
    最近打的三场比赛的总结
    10day2
    10day1
    chrome谷歌浏览器插件制作简易教程
    nodejs net模块
  • 原文地址:https://www.cnblogs.com/hoosway/p/3703094.html
Copyright © 2011-2022 走看看