【美高梅开户网址】NET中自适应三16个人,实例程序

正文属于原创,转载请注明出处,多谢!

本文属于原创,转发请注脚出处,感谢!

       
要是2个.NET应用要自适应三十几人/陆12位系统,只须要在品种的“指标平台”设置为“Any
CPU”。可是只要利用中使用了SQLite,情形就分裂了。

–头阵于天涯论坛, 转发请保留此链接  【美高梅开户网址】NET中自适应三16个人,实例程序。博客原来的小说地址

1、开发环境

壹、开发环境

 

正文运营环境: Win柒 X6四, VS2010

操作系统:Windows 10 X6四

操作系统:Windows 十 X6四

 
 SQLite的.NET开发包来自是System.Data.SQLite,实现包容ADO.NET接口,也提供了Linq和Entity
Framework
六达成。但这不首要,首要的是System.Data.SQLite是由两有的代码组成的,壹部分是非托管的C++代码实现,壹部分是托管代码与.NET
框架接口。由于非托管代码无法构建成“Any
CPU”的,所以System.Data.SQLite的下载页面包车型客车每一个包都以按30人或617人系统进行了区其他。

1. SQLite 的优点:

    SQLite 是1款轻型数据库,开发包惟有十几M, 相对于 MSSQL 多少个 G
的容积来说简直是小 Case, 而且在打包成的软件里只需求添加相关的 DLL
就足以在别的的处理器运转,那一点的话比 Access 数据库还要来得便宜。

  SQLite纵然一点都不大巧,可是帮助的SQL语句不会太没有于其余开源数据库。

美高梅开户网址,   
越来越多详情参见百科:SQLite

支付环境:VS2014

付出环境:VS2014

 

二. 开签发承包合约下载

    SQLite
官方下载网站

   
本文所用开发包:sqlite-netFx40-setup-bundle-x86-2010-1.0.93.0.exe 

编制程序语言:C#

编制程序语言:C#

  聊到此处,顺便说一下,望着System.Data.SQLite的下载页面就迷糊。就算在下载页面一初叶就花了汪洋的篇幅来证实什么挑选下载,然则估算没几人会把它看完,所以那边依旧不难介绍一下。

3. VS 2010 使用 SQLite

.NET版本:.NET Framework 4.0

.NET版本:.NET Framework 4.0

 

3.1 安装 SQLite

     3.1.一. 安装部件有1个选用:Full installation(完全安装), Compact
installation(精简安装), Custom installation(自定义安装), 本文所选为 Full
installation

     3.一.二 默许为不勾选 Instatll the designer components for Visual
Studio 20十, 能够把那几个选上

美高梅开户网址 1

 

目的平台:X八六

目的平台:X捌陆


   一)
首先是按类型分为安装包、非静态连接的2进制包和静态连接的二进制包。安装包会安装相关的动态库到系统内,并登记到GAC(Global
Assembly
Cache);二种2进制包的界别在于非托管部分的连天方式分歧,非静态连接的贰进制包在行使时索要VC运行时库的支撑。须要小心的是:如若必要在
Visual Studio中接二连3SQLite数据库,就非得采用妥帖的安装包举行安装。

 

  比如,要在Visual Studio
20第10中学年老年是SQLite,应该下载“sqlite-netFx40-setup-bundle-x八陆-20十-一.0.90.0.exe”,那在下载包的认证中有肯定金鼎文字表明。

美高梅开户网址 2

 

[下载包的印证中有深入人心的宋体字表明]

 

  安装之后就能够在Visual Studio 20第10中学总是SQLite了:

美高梅开户网址 3

 

[在Visual Studio中连接SQLite]

 

   贰) 各种门类都按.NET版本分成了好多小组,近来从.NET 二.0 SP贰到.NET
肆.5.壹,一共帮忙多个本子的.NET
Framework。每一个.NET版本又分为3十一位和613个人两组。选择32人照旧陆十五人是基于使用系统来支配的。比如开发的时候是陆16位系统而发表后运维在三1拾壹位系统上,就必要在开发时选择63人System.Data.SQLite.dll,而在揭橥时用三十三位的
System.Data.SQLite.dll替换(看起来很麻烦的金科玉律请看前边的化解办法)。

 

   三)
在每一个.NET版本分组中都有一个文件包,一个暗含“bundle”字样,另叁个向来不。在那之中带有“bundle”字样的意味动态库是按混合方式编写翻译的,在
使用的时候只须要System.Data.SQLite.dll就足以了,而不带“bundle”的则是将非托管部分和托管部分各自编写翻译,System.Data.SQLite.dll不可能独立运用,还索要有SQLite.Interop.dll才能应用。


 

三.一.贰 先在地面创造3个空荡荡文件,扩张名字为*.db,

         添加 SQLite 连接: Server Explorer -> Data Connections ->
Add Connection …

         Data Source 为 SQLite Database file

       
 由于表结构相似是2次性创作,所以添加数据库后使用视图直接建立数据表结构,不必采用代码创建

美高梅开户网址 4

美高梅开户网址 5

美高梅开户网址 6

二、前言

二、前言

  言归正传,假诺要利用“Any
CPU”的System.Data.SQLite.dll,就非得采取不带“bundle”字样,即非混合编写翻译的二进制包。

3.1.3 添加 SQLite 引用

        Solution Explorer -> Reference -> Add Reference…       
找到SQLite 安装路径添加 System.Data.SQLite.dll 引用 

        该类库包蕴SQLiteConnection , SQLiteCommand,SQLiteDataAdapter
等延续操作数据库须求的类

事先运用的是软件的Access来创造基于本地的数据库软件,发将来使用进度中,发现Access比较耗内部存款和储蓄器,运营速度比SQLite稍微慢,其它1个最要害的是Access加密的公文简单被破解,因而,将来转会使用SQLite来替代Access。

在此以前使用的是软件的Access来创建基于本地的数据库软件,发现在选用进程中,发现Access比较耗内部存款和储蓄器,运营速度比SQLite稍微慢,别的一个最根本的是Access加密的文书简单被破解,由此,以往转会使用SQLite来替代Access。

 

三.一.4 新建 SQLiteHelper 类,首若是db 连接的主导音讯,如路径,以及部分数据表的基本操作方法(根据个体须求):

    public class SQLiteHelper
    {
        public SQLiteConnection Connection
        {
            get
            {
                if (_cn == null)
                {
                    Settings settings = new Settings();
                    string connection = settings.Connection.ToString();
                    _cn = new SQLiteConnection(connection);
                }
                return _cn;
            }
        }

        private SQLiteConnection _cn = null;

        public DataTable GetDataTable(string query)
        {
            DataTable dt = new DataTable();
            try
            {
                Connection.Open();
                GetAdapter(query).Fill(dt);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Connection.Close();
            }
            return dt;
        }

        public bool Update(string tableName, DataTable dt)
        {
            try
            {
                Connection.Open();
                string tableStructureQuery = string.Format("SELECT * FROM {0} WHERE 1 = 0", tableName);
                SQLiteDataAdapter da = GetAdapter(tableStructureQuery);
                da.Update(dt);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Connection.Close();
            }
            return true;
        }

        public SQLiteDataAdapter GetAdapter(string query)
        {
            SQLiteCommand selectCommand = new SQLiteCommand(query, Connection);
            SQLiteDataAdapter adapter = new SQLiteDataAdapter(selectCommand);
            SQLiteCommandBuilder sb = new SQLiteCommandBuilder(adapter);
            return adapter;
        }

        public bool ExecuteScript(string query)
        {
            try
            {
                SQLiteCommand selectCommand = new SQLiteCommand(query, Connection);
                Connection.Open();
                selectCommand.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            finally
            {
                Connection.Close();
            }

            return true;
        }
    }

    public static class DataViewHelper
    {
        public static DataView Clone(this DataView source, string filter)
        {
            if (source == null)
            {
                throw new ApplicationException("Source cannot be null");
            }

            DataView newView = new DataView(source.Table);

            string viewfilter = source.RowFilter;

            List<string> filters = new List<string>();
            if (!string.IsNullOrEmpty(viewfilter))
                filters.Add(string.Format("({0})", viewfilter));
            if (!string.IsNullOrEmpty(filter))
                filters.Add(string.Format("({0})", filter));

            newView.RowFilter = string.Join(" AND ", filters.ToArray());

            return newView;
        }

        public static DataView Clone(this DataView source)
        {
            return source.Clone(string.Empty);
        }
    }

 

(1) 当中 Setting.Connection 为 string 类型,只要求钦定 db 路径,本文
Connection 为: Data Source=D:\Trade\Trade\DB\Quotation.db 

      那里提一下 MSSQL 的 连接字符串以示比较,壹般景观下 MSSQL
的连接为ConnectionString 类型的配置节点,如:

      <add name=”Test” connectionString=”Data
Source=ServerName;Initial Catalog=dbName;User ID=xxx;Password=***;”
      providerName=”System.Data.SqlClient” />

(二) 能够见见数库表的操作方法 与 其他数据库操作
类似:连接,运转操作命令,关闭

(3) 小编尝试添加2个 SQLiteParameter.Direction
为 ParameterDirection.Output 的参数 但报错,现今没找到科学的选择办法

(四) 使用 SQLiteConnection 能够用 using
的点子采用,有利于程序内部存款和储蓄器管理及垃圾回收

三、SQLite的下载

三、SQLite的下载

 
 非混合编写翻译的2进制包有System.Data.SQLite.dll和SQLite.Interop.dll三个动态库。按法定表明,SQLite.Interop.dll是能够放与System.Data.SQLite.dll相同的目录下,也足以置身x八六或x64子目录下,由
System.Data.SQLite.dll遵照系统项目调用。为了确认,下载如下多少个包来进展相比:

3.一.伍 新建 DAO 类,继承 SQLiteHelper ,重即便对准实际表 的不2秘籍: 

 

    public class DAO : SQLiteHelper
    {
        public DAO(string tableName)
        {
            TableName = tableName;
        }
        public string SelectTableQuery { get { return "SELECT * FROM " + TableName; } }

        public string TableStructureQuery { get { return SelectTableQuery + " WHERE 1=0"; } }

        public int GetMaxID(string fieldName)
        {
            StringBuilder commandText = new StringBuilder();
            commandText.AppendLine(string.Format(@"SELECT MAX({0}) ", fieldName));
            commandText.AppendLine(string.Format(@" FROM {0} ", TableName));
            DataTable dt = GetDataTable(commandText.ToString());
            if (dt == null || dt.Rows.Count == 0)
                return 0;
            else
                return int.Parse(dt.Rows[0][0].ToString());
        }

        public string TableName { get; set; }

        internal DataTable GetDataTableStructor()
        {
            return GetDataTable(TableStructureQuery);
        }

        public bool Update(DataTable dt)
        {
            return base.Update(TableName, dt);
        }
    }

 

一、由于是基于.NET的C#编制程序,需下载System.Data.SQLite.dll来开始展览引用,下载网站如下:

一、由于是基于.NET的C#编制程序,需下载System.Data.SQLite.dll来进展引用,下载网址如下:

sqlite-netFx40-binary-Win32-2010-1.0.90.0.zip

sqlite-netFx40-binary-x64-2010-1.0.90.0.zip

4. SQLite 实例小程序 

    Quotation
小程序是用来查看工商业银行行贵金属报价的小工具(那里只更新纸黄金报价),建行贵金属报价法定网站

    用户能够每一日查看报价,设置 更新频率(暗许更新周期为 120 s )。

    下载的报价数据保存到 quotation.db
里,同时用户能够上传个人贵金属账户交易记录。

   
依据交易记录设置个人购销差价,接纳是不是播放音乐提示用户购购销出,适用于贵金属短线投资赞助小工具(投资有高危机,入市需谨慎)

 

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

  结果发现唯有SQLite.Interop.*不相同,其余文件都完全相同

四.一 使用方式:

4.1.1 下载:Quotation  Setup
和 db 文件 ( setup 文件用 VS 自带工具打包好的MSI 文件 非源代码 )

4.一.二 安装 Setup 文件, PS: 想要精通 db 结构的读者能够用 VS 或任何
SQLite 命令、视图软件查看

肆.1.三 更改配置文件,打开 Trade.exe.config , 修改 节点:

<setting name=”Connection” serializeAs=”String”>
<value>Data
Source=D:\Trade\Trade\DB\Quotation.db</value>
</setting>

        个中 <value>Data Source = db path</value> 是
Quotation.db 的寄放路径,注意假若软件设置在 C
盘保存时恐怕提醒不恐怕访问,这时可以把 .config
文件复制出来修改后再交替原来的公文

四.一.4 从 <Load Trx> 菜单命令导入从平安银行下载好的 txt
文件(不要转移格式)用于相比差价, <Transactions>
查看导入的贸易记录,无效的交易记录能够选中后 Transactions -> Close
来关闭记录。

肆.1.五小程序为笔者个人开销,用于学习沟通,个人免费应用,小说权解释权归软件小编全数,任什么人不得进行反编译及这些向别人收取任何成本,欢迎读者留言提议意见和提出。

4.一.陆 程序截图

美高梅开户网址 7

 

 

补充:

android app 查询中信银行报价可到以下网站下载:

IcbcQuotation
下载 

软件表明: 其实是报价网站的飞快格局,只是每隔30s 自动刷新一下

软件截图:

美高梅开户网址 8

2、由于应用的是.NET Framework 肆.0,且软件开发的对象平台是X8陆,由此需下载
sqlite-netFx40-setup-x86-2010-壹.0.十五.二.exe 软件,下载网站如下:

二、由于选用的是.NET Framework 四.0,且软件开发的对象平台是X8陆,由此需下载
sqlite-netFx40-setup-x8陆-20十-1.0.十5.二.exe 软件,下载网站如下:

美高梅开户网址 9

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-x86-2010-1.0.105.2.exe
http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-x86-2010-1.0.105.2.exe

 

其余,还有1个 sqlite-netFx40-setup-bundle-x八陆-20拾-一.0.105.二.exe,它与
sqlite-netFx40-setup-x八陆-20十-一.0.十5.二.exe
的区分是,它涵盖VS20十的运维时组件,因利用的VS20一伍,全数安装该带有bundle的软件其实并未什么样用处,假使您选取的是VS20十,则能够举办下载安装,下载网站如下:

别的,还有1个 sqlite-netFx40-setup-bundle-x8⑥-2010-1.0.拾五.贰.exe,它与
sqlite-netFx40-setup-x八陆-2010-一.0.十5.贰.exe
的区分是,它包罗VS20拾的运转时组件,因利用的VS二零一六,全数安装该带有bundle的软件其实并未有啥样用处,假设你使用的是VS20十,则能够开始展览下载安装,下载网站如下:

[正如结实:只有SQLite.Interop.*不同]

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-bundle-x86-2010-1.0.105.2.exe
http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-bundle-x86-2010-1.0.105.2.exe

 

叁、下载的是Setup安装包,因而只需依照点击下一步(Next)或安装(Install),直至安装收尾即可。

三、下载的是Setup安装包,由此只需服从点击下一步(Next)或安装(Install),直至安装收尾即可。

  然后将五个包的SQLite.Interop.*分级位于x八陆和x64子目录下,合并成二个包。再在区别品种的系统下运维test.exe,结果都以截然通过

4、创设加密版本的SQLite数据库

肆、创设加密版本的SQLite数据库

美高梅开户网址 10

在此采纳的SQLite数据库管理软件为SQLite
Studio,版本为3.①.一,下载网站如下:

在此选拔的SQLite数据库管理软件为SQLite
Studio,版本为三.壹.1,下载网站如下:

 

https://sqlitestudio.pl/files/sqlitestudio3/complete/win32/sqlitestudio-3.1.1.zip
https://sqlitestudio.pl/files/sqlitestudio3/complete/win32/sqlitestudio-3.1.1.zip

 

有人会问,怎么不利用Navicat For
SQLite,那一个软件不仅有1齐的华语版本,而且还有详细使用验证,不是越来越好啊?

有人会问,怎么不接纳Navicat For
SQLite,这么些软件不仅有一齐的普通话版本,而且还有详细使用表明,不是更加好呢?

   末了索要做的正是在Visual
Studio项目中援引System.Data.SQLite.dll,再将x8陆\SQLite.Interop.dll和x64
\SQLite.Interop.dll拷贝到品种根目录,包涵在品种中,在性质中设置“如若较新则复制”或“始终复制”。生成结果就像那样:

其实,当初也想用这么些软件来对SQLite数据库进行政管理理,但在创制加密版本的SQLite数据库时,发现使用System.Data.SQLite.dll来对该数据库操作时,会弹出类似数据库文件被加密或然不是数据库文件的唤起,而非加密版本的就从没有过此难点,因而,能够行使Navicat
For
SQLite来对非加密的SQLite数据操作,但假使供给利用加密的SQLite数据库,推荐应用SQLite
Studio,因为它生成的加密版本SQLite数据库能够被System.Data.SQLite.dll识别。

实则,当初也想用那么些软件来对SQLite数据库进行管制,但在创造加密版本的SQLite数据库时,发现接纳System.Data.SQLite.dll来对该数据库操作时,会弹出类似数据库文件被加密或然不是数据库文件的晋升,而非加密版本的就从未有过此题材,因而,可以采取Navicat
For
SQLite来对非加密的SQLite数据操作,但就算供给利用加密的SQLite数据库,推荐应用SQLite
Studio,因为它生成的加密版本SQLite数据库能够被System.Data.SQLite.dll识别。

TestSQLite\bin\Debug

│  System.Data.SQLite.dll

│  TestSQLite.exe

├─x64

│      SQLite.Interop.dll

└─x86

       SQLite.Interop.dll

关于为什么不能够应用Navicat For
SQLite来对加密数据库记性操作的缘故是:Navicat使用的加密算法与SQLite
Studio的不等同。

关于为什么不能够使用Navicat For
SQLite来对加密数据库记性操作的来由是:Navicat使用的加密算法与SQLite
Studio的不雷同。

  组合后的包命名字为“sqlite-netFx40-static-binary-x捌陆-x64-20十-1.0.90.0.zip”,共享给我们,欢迎下载应用。

一、打开SQLite Studio,点击“添加数据库”按钮,如下图所示:

1、打开SQLite Studio,点击“添加数据库”按钮,如下图所示:

 

美高梅开户网址 11

美高梅开户网址 12

◆ 51CTO财富站共享

◆ 360云盘共享

贰、数据类型采取“System.Data.SQLite”,点击花青拉长按钮,将文件保留至D:\Test.db,并在Password壹栏内输入密码:2017(如不使用密码,此处留空即可),然后点击“OK”按钮即可成立1个加密版本的SQLite
DB文件,如下图所示:

二、数据类型选用“System.Data.SQLite”,点击鲜紫拉长按钮,将文件保留至D:\Test.db,并在Password一栏内输入密码:20一柒(如不使用密码,此处留空即可),然后点击“OK”按钮即可创造三个加密版本的SQLite
DB文件,如下图所示:

 

美高梅开户网址 13

美高梅开户网址 14

 

三、双击“Test”数据库,将会议及展览示其下的子节点,采用“Tables”,并在工具栏点击“新建表”按钮,如下图所示:

3、双击“Test”数据库,将会来得其下的子节点,选拔“Tables”,并在工具栏点击“新建表”按钮,如下图所示:

转自:

美高梅开户网址 15

美高梅开户网址 16

四、在Table name文本框内输入表名Info,并点击“Add
columns(Ins)”图标以便添加列,如下图所示:

4、在Table name文本框内输入表名Info,并点击“Add
columns(Ins)”图标以便添加列,如下图所示:

美高梅开户网址 17

美高梅开户网址 18

5、添加第一个字段,字段名称为ID,数据类型为Text,将主键前的复选框打钩,并点击“OK”按钮,如下图所示:

五、添加第四个字段,字段名叫ID,数据类型为Text,将主键前的复选框打钩,并点击“OK”按钮,如下图所示:

美高梅开户网址 19

美高梅开户网址 20

陆、重复第陆个步骤,点击“Add
columns(Ins)”图标以便添加其余二个列,字段名称为Name,数据类型为Text,将非空前的复选框打钩,并点击“OK”按钮,如下图所示:

陆、重复第伍个步骤,点击“Add
columns(Ins)”图标以便添加其余1个列,字段名称为Name,数据类型为Text,将非空前的复选框打钩,并点击“OK”按钮,如下图所示:

美高梅开户网址 21

美高梅开户网址 22

7、点击“Commit structure changes”图标以便保存该表及字段,如下图所示:

7、点击“Commit structure changes”图标以便保存该表及字段,如下图所示:

美高梅开户网址 23

美高梅开户网址 24

八、在弹出的对话框点击“OK”按钮,即可到位表单的创始工作,如下图所示:

八、在弹出的对话框点击“OK”按钮,即可实现表单的始建筑工程作,如下图所示:

美高梅开户网址 25

美高梅开户网址 26

九、选取“数据”选项卡,点击“插入行(Ins)”图标按钮,如下所示:

玖、选择“数据”选项卡,点击“插入行(Ins)”图标按钮,如下所示:

美高梅开户网址 27

美高梅开户网址 28

十、在行数据编辑栏里输入两条数据,第3条数据ID为20一七、Name为LSB,第一条数据ID为201一、Name为CNC,如下图所示:

10、在行数据编辑栏里输入两条数据,第一条数据ID为20一柒、Name为LSB,第一条数据ID为201壹、Name为CNC,如下图所示:

美高梅开户网址 29

美高梅开户网址 30

11、添加多少甘休之后,点击“提交(Ctrl+Return)”图标按钮提交刚才输入的两条数据,如下图所示:

1一、添加数量截至之后,点击“提交(Ctrl+Return)”图标按钮提交刚才输入的两条数据,如下图所示:

美高梅开户网址 31

美高梅开户网址 32

12、关闭SQLite Studio数据库管理软件。

12、关闭SQLite Studio数据库管理软件。

五、使用System.Data.SQLite.dll访问SQLite数据库

五、使用System.Data.SQLite.dll访问SQLite数据库

一、新建贰个品种名称为“SQLiteTest”的控制台应用程序,如下图所示:

壹、新建多个品类名称叫“SQLiteTest”的控制台应用程序,如下图所示:

美高梅开户网址 33

美高梅开户网址 34

2、在“SQLiteTest”项目中右键点击“引用”,在弹出的上下文菜单中选取“添加引用(中华V)”,如下图所示:

2、在“SQLiteTest”项目中右键点击“引用”,在弹出的上下文菜单中选拔“添加引用(Highlander)”,如下图所示:

美高梅开户网址 35

美高梅开户网址 36

3、将路径为“C:\Program Files
(x86)\System.Data.SQLite\2010\GAC\System.Data.SQLite.dll”的引用添加进去,如下图所示:

三、将路径为“C:\Program Files
(x86)\System.Data.SQLite\2010\GAC\System.Data.SQLite.dll”的引用添加进去,如下图所示:

美高梅开户网址 37

美高梅开户网址 38

四、在档次性质设置中,将“生成”选项卡中的指标平台改为“X八6”,否则,软件相当的小概运转,原因是使用的是X捌陆版本的System.Data.SQLite.dll,如下图所示:

四、在类型性质设置中,将“生成”选项卡中的指标平台改为“X八陆”,否则,软件无法运行,原因是利用的是X八陆版本的System.Data.SQLite.dll,如下图所示:

美高梅开户网址 39

美高梅开户网址 40

 

 

5、在Main主函数里输入以下代码,如下:

伍、在Main主函数里输入以下代码,如下:

using System;
using System.Data.SQLite;
using System.Data;

namespace SQLiteTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SQLiteConnection connection = new SQLiteConnection(@"Data Source = D:\test.db;Password = 2017"))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection)
                { CommandText = "SELECT * FROM [main].[Info]" })
                {
                    DataTable table = new DataTable("Info");
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    adapter.Fill(table);
                    foreach(DataRow row in table.Rows)
                    {
                        foreach(DataColumn col in table.Columns)
                        {
                            Console.Write($"{row[col]}\t");
                        }
                        Console.WriteLine();
                    }
                }
            }
            Console.ReadKey();
        }
    }
}
using System;
using System.Data.SQLite;
using System.Data;

namespace SQLiteTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SQLiteConnection connection = new SQLiteConnection(@"Data Source = D:\test.db;Password = 2017"))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection)
                { CommandText = "SELECT * FROM [main].[Info]" })
                {
                    DataTable table = new DataTable("Info");
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    adapter.Fill(table);
                    foreach(DataRow row in table.Rows)
                    {
                        foreach(DataColumn col in table.Columns)
                        {
                            Console.Write($"{row[col]}\t");
                        }
                        Console.WriteLine();
                    }
                }
            }
            Console.ReadKey();
        }
    }
}

陆、运转结果如下:

陆、运转结果如下:

美高梅开户网址 41

美高梅开户网址 42

 

 

附源代码:

附源代码:

https://pan.baidu.com/s/1bpeXXvx
https://pan.baidu.com/s/1bpeXXvx

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图