zoukankan      html  css  js  c++  java
  • ADO.NET基础01

    数据库中数据的导入导出

      在使用一些数据库时,很多时候都要将文件导入导出到指定的文件夹中;

    数据的导入导出就必须用到stream函数,这就必须用到Using System.IO的命名空间;

    **在数据库的连接问题上,不要每次都重新创建连接,因为它是非常耗时的;

    eg one :

    private void button1_Click(object sender, EventArgs e)
        {
            if (odfImport.ShowDialog() == DialogResult.OK)
            {
                using (FileStream fileStream = File.OpenRead(odfImport.FileName))
                {
                    using (StreamReader streamReader = new StreamReader(fileStream))
                    {
                        string Line = null;
                        while ((Line = streamReader.ReadLine()) != null)
                        {
                            string[] strs = Line.Split(' ');
                            string name = strs[1];
                            int age = Convert.ToInt32(strs[2]);
                            string connection = "Data Sources=zhanghui; Initial Catalog=Ahui;User ID=sa;Pwd=111;";
                            using (SqlConnection conn = new SqlConnection(connection))
                            {
                                conn.Open();
                                using (SqlCommand cmd = conn.CreateCommand())
                                {
                                    cmd.CommandText = "Insert into T_User(Name,Age) values(@Name,@Age)";
                                    cmd.Parameters.Clear();
                                    cmd.Parameters.Add(new SqlParameter("Name", name));
                                    cmd.Parameters.Add(new SqlParameter("Age", age));
                                    cmd.ExecuteNonQuery();
                                }
                            }
                        }
                    }
                }
            }
            MessageBox.Show(@"插入成功");
        }

    二:读取配置中的连接字符串

    一:添加App.config文件

         在资源管理器中的----引用中右键就可以添加------找到system.configuration

    二:在app.config文件中添加

    <configuration>

    <add name=”ConStr”connectionString=”Data Source=zhanghui; Initial Catalog=Ahui;  User ID=sa; Pwd=111”/>

    </configuration>

    三:在主函数中引用

    string ConStr=configurationMangager.configurationString[“ConStr”].configurationString;

    eg one:

    //数据库连接字符串
    string connString = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
    //string connString = "Data Source=zhanghui;  Initial Catalog=Ahui;  User ID=sa; Pwd=111";
    //string connString = @"Data Source=(LocalDB) 11.0;  AttachDbFilename=""D:VS2008ProjectsADO.NETado.net文件Database1.mdf"";  Integrated Security=True;User Instance=True";
    //string con = @"Data Source=(LocalDB)v11.0;AttachDbFilename='D:VS2008ProjectsADO.NETado.net 文件Database1.mdf ';Integrated Security=True;User Instance=True";
    //创建数据库连接
    SqlConnection conn = new SqlConnection(connString);
    //打开数据库
    conn.Open();
    Console.WriteLine("打开成功");
    Console.ReadKey();

    app.config文件

    <connectionStrings>
      <add name="ConStr" connectionString="Data Source=zhanghui; Initial Catalog=Ahui; User ID=sa; Password=111 "/>
    </connectionStrings>

    image

    在程序中要学会使用配置文件,这样字程序就会变得很容易执行。

    学习封装

    //params 可变的参数,用其定义的变量的数是可变的,常用在多个数的传参的时候。
    封装的意思就是将程序中经常用到的代码放在一个方法中,用的时候直接调用就行。

    DataSet

       每次读取数据都需要创建连接数据库,和麻烦,我们可以创建一个类,将其封装起来,用的时候直接调用就行。这样子就方便了很多。

    SqlDataSet是连接相关的,SqlDataSet中的查询结果并不是放到程序中的,而是放在数据库的服务器上的,而这个SqlDataSet就相当于一个指针

    只能读取当前指向的行,一担和数据库断开连接就不能再读取。{好处:无论读取的数据有多少条对于程序占用的内存几乎没有什么影响。

       SqlDataAdapter是DataSet和数据库之间的连接的桥梁,数据集DataSet包含若干表DataTable,而DataTable里面包含若干行,DataRow。

    eg:

    image

    当数据库开一定的时间,要重启一下,在使用。

    对于数据库来说,连接是非常宝贵的资源,用完之后一定要dispose掉。

    DataSet的更新

    一:利用到了Update的修改,这样子就能修改到服务器里面的数据。

    //下面的两个修改只是修改了本地内存中存储的数据,没能修改到服务器里面的数据。
                      row["UserName"] = "huoooo";
                     
                      //修改服务器里面的数据,就要用到VS里面内置的"Update"来修改;
                      SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                      adapter.Update(dataset);

                     MessageBox.Show("修改成功");

    二:可空的数据类型

    正确的表示:

    string s1=null;

    int i1=0;

    错误的表示:int i2=null;

    修改后的可空数据类型:int? i1=null;

                                              int? i2=0;

    // :int?—>可空的int,解决数据库和C#对于int是否可以为null的不同所设置。

    三:弱类型的坏处

    1:只能取出列名,而且只能在前台显示的时候看到。

    2:取到的字段是object类型,要使用的话要进行类型转换。

    3:数据绑定很麻烦,无法使用ASP.NET等快速开发工具。

    四:DataSet的要点

    1:这个数据集可以理解为一个简单的数据库,这个数据库在计算机内存中保存,可以对其进行修改,之后通过程序在将其更新到服务器中。【数据集是独立于任何数据库的】 

    2:【DataSet数据集】的作用是临时存储数据,【DataAdapter数据适配器】的作用是把数据集和服务器的数据进行替换,更新。

    五:使用using语句

    1:不用关闭数据库,using自动就关闭了,很方便。using语句容许程序员指定资源的对象应当何时释放资源,该语句定义了一个范围,在此结束时就将其释放。

    using()

    {

    //打开数据连接。

    }

     

     

  • 相关阅读:
    sqlilab less19-less22
    sqlilab less11-less18
    逆向——序列号相关总结
    xctf攻防世界——crackme writeup
    ESP定律脱壳——NsPack3.x脱壳
    避免全局变量漫天飞
    C语言实现队列
    STM32中的C语言知识点
    超时事件时间戳
    STM32-电源控制、低功耗模式
  • 原文地址:https://www.cnblogs.com/netxiaohui/p/4309439.html
Copyright © 2011-2022 走看看