A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  昨天我妈打电话过来,问我最近是不是手机坏了,怎么好久没消息了=_=、、、(我妈经常用我姐的手机看我的空间动态和说说),其实当然不是手机坏了,而是实在不知道要说些什么,也就是词穷的意思。今天发给日志吧,证明哥尚在地球存活着,不喜勿喷~
        晚上邱老师交给我一个活,就是把文本文档中的英语单词和对应的汉语意思录入到SQL数据库,文本文档的内容截图如下:
D:\psd.png
文档中的排版很整齐,这也为数据导入省了不少功夫
        然后,新建一个名为Dictionary的数据库,然后新建一个表words,包含三个字段,id(int)自增,English,Chinese分别存储英语和汉语,数据库就是这样了。
         接下来,新建一个控制台程序,在program.cs中编写代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace 英汉词典
{
    class Program
    {
        static void Main(string[] args)
        {

            List<string> listEng = new List<string>();
            List<string> listChin = new List<string>();
            string path = @"F:\英汉词典TXT格式.txt";
            string[] dicText = File.ReadAllLines(path, Encoding.Default);
            for (int i = 0; i < dicText.Length; i++)
            {
                string[] text = dicText.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                listEng.Add(text[0].ToString());
                listChin.Add(text[1].ToString());
            }
            for (int i = 0; i < listChin.Count; i++)
            {
                Data.InsertData(listEng, listChin);
            }
            Console.WriteLine("导入完成!");
            //Console.WriteLine(listEng.Count.ToString() + listChin.Count.ToString());
            Console.ReadKey();

        }
        public class Data
        {
            public static void InsertData(string eng, string chi)
            {
                SqlConnection conn = new SqlConnection("server=.;database=English2Chinese;uid=sa;pwd=wangchunlei");
                string sqlStr = "insert into Words(English,Chinese) values(@english,@chinese)";
                SqlCommand cmd = new SqlCommand(sqlStr, conn);
                SqlParameter[] paras = {
                                       new SqlParameter("@english",eng),
                                       new SqlParameter("@chinese",chi)
                                                                          };
                cmd.Parameters.AddRange(paras);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
        }
    }
}
    运行程序,即可将数据导入数据库,当然这些代码是存在一些问题的
(1)使用List<string>在数据遍历的时候分别通过Add()方法存储英语和汉语,在这个程序中并没有出现错误,但如果有某个英语单词和汉语意思只存在一个,那么就是导入录入的数据英语和汉语对应起来会出现错位,当然,在程序能正常跑起来的情况下。
(2) 数据导入函数 InsertData(),分别传入英语和汉语的两个string类型的参数,并在遍历的时候执行该方法。调用函数实现响应的功能体现了较好的封装性,但是在遍历的情况下多次执行该方法就存在一些执行速度的问题,因为每次执行都打开、关闭连接,接近八千个单词就要反复打开、关闭数据库八千次,你说能不慢吗?=_=、、、当然解决的办法也很简单,在执行函数之前将数据库打开,在遍历结束后再将连接关闭,这样只需要打开、关闭连接一次,自然就会更快些,只是对于这个数据导入的功能来说,我们只需要用一次,性能问题不考虑也罢了。

1 个回复

倒序浏览
哈哈,大雷是个懂事的孩子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马