• winform程序如何读取程序内DB文件


    首先程序里的DB文件,我使用Navcat创建一个DB文件(类型是Sqlite).然后再添加到程序里面。读取程序里的数据库首先要先读取DB文件的数据路径,然后用在使用SQL语句进行的读取和存储数据(记住使用sqlitehelper类,百度上就有)

    首先选取路径,我使用的方法:string Path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + "\DB.db3";

    连接数据库的方法

     string connString="Date Source="+Path;

    SQLiteConnection conn = new SQLiteConnection(connString);//连接DB

    我这里是是将姓名和ID保存在数据库中,只保留一行新数据行,若是出现新的ID则将覆盖上一个ID。

    举个例子将数据保存在数据库中:

    public static SQLiteConnection  connection()//连接数据库

    {

    string Path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + "\DB.db3";

    if(file.exists(path))

    {

     string connString="Date Source="+Path;

    SQLiteConnection conn = new SQLiteConnection(connString);//连接DB

    return conn;

    }

    else

    {

    return null;

    }

    }

    public static void saveData(string data1,string data2)//存数据

    {

    string cmdText = string.Empty;
    if (!string.IsNullOrEmpty(FeedType) || !string.IsNullOrEmpty(IPAddress))
     {
    str = string.IsNullOrEmpty(str) ? "" : "ConnectStr='" + str + "'";
    feedType = string.IsNullOrEmpty(feedType) ? "" : "FeedType='" + feedType + "'";
    cmdText = string.Format("update CSSetting set {0},{1}", str, feedType);//为什么没有用WHERE语句,因为我只用一行当有新数据时我直接更新数据,当空的时候我才给她赋值
    }
    else
    {
    cmdText = string.Format("insert into CSSetting (ConnectStr,FeedType) Values('{0}','{1}')", str, feedType);
    }
    return SqliteHelper.ExecuteNonQuery(cmdText);

    }

    }

    public static void getData()

    {

    try
    {
    string cmdText = "select * from CSSetting";
    DbDataReader reader = SqliteHelper.ExecuteReader(cmdText);
    //var reader = SqliteHelper.ExecuteReader(cmdText);
    //SQLiteDataReader reader = SqliteHelper.ExecuteReader(cmdText);
    List<string> Config = new List<string>();
    if (reader != null)
    {
    while (reader.Read())//读取数据

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.Text;
    using System.Data.SQLite;
    using System.Data;
    using System.IO;
    using System.Reflection;
    
    namespace Infrastructure
    {
        public static class SqliteHelper//这是我使用的sqliterhelp,百度就有
        {
            private static SQLiteConnection conn = null;
            private static SQLiteCommand cmd = null;
    
            public static SQLiteConnection Connetion
            {
                get { return conn; }
                set { conn = value; }
            }
    
            //获得连接对象
            public static SQLiteConnection GetSQLiteConnection()
            {
                string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + "\DB.db3";
                try
                {
                    string connString = "Data Source=" + appPath;
                    SQLiteConnection conn = new SQLiteConnection(connString);
                    return conn;
                }
                catch (System.Exception ex)
                {
                    //MessageBox.Show(ex.Message);
                    return null;
                }
            }
    
            //命令准备
            private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
    
                cmd.Parameters.Clear();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = CommandType.Text;
                cmd.CommandTimeout = 30;
                if (p != null)
                {
                    foreach (object parm in p)
                        cmd.Parameters.AddWithValue(string.Empty, parm);
                }
            }
    
            //为批量操作设置长连接的对象
            public static void GetBatchConn()
            {
                string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
                try
                {
                    string connString = "Data Source=" + appPath + "\RTPS_PT_DB1.db3";
                    conn = new SQLiteConnection(connString);
                    conn.Open();
                    cmd = new SQLiteCommand();
                }
                catch (System.Exception ex)
                {
                    conn = null;
                    cmd = null;
                }
            }
    
            //关闭用于事务的连接对象
            public static void CloseBatchConn()
            {
                try
                {
                    if (conn != null && conn.State != ConnectionState.Open)
                    {
                        conn.Close();
                        conn.Dispose();
                        if (cmd != null)
                        {
                            cmd.Dispose();
                        }
                    }
                }
                catch (System.Exception ex)
                { }
                finally
                {
                    conn = null;
                    cmd = null;
                }
            }
    
            //获取命令执行的结果数据集
            public static DataSet ExecuteDataset(string cmdText, string tableName, params object[] p)
            {
                try
                {
                    DataSet ds = new DataSet();
                    SQLiteCommand command = new SQLiteCommand();
                    using (SQLiteConnection connection = GetSQLiteConnection())
                    {
                        PrepareCommand(command, connection, cmdText, p);
                        SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                        adapter.Fill(ds, tableName);
                        
                    }
                    return ds;
                }
    
                catch (System.Exception ex)
                {
                    //MessageBox.Show(ex.ToString());
                    return null;
                }
            }
    
            //获取查询所得行
            public static DataRow ExecuteDataRow(string cmdText, string tableName, params object[] p)
            {
                DataSet ds = ExecuteDataset(cmdText, tableName, p);
                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                return ds.Tables[0].Rows[0];
                return null;
            }
    
            //执行sql语句,返回受影响的行数
            public static int ExecuteNonQuery(string cmdText, params object[] p)
            {
                try
                {
                    SQLiteCommand command = new SQLiteCommand();
                    using (SQLiteConnection connection = GetSQLiteConnection())
                    {
                        PrepareCommand(command, connection, cmdText, p);
                        return command.ExecuteNonQuery();
                    }
                }
                catch (System.Exception ex)
                {
                    return -1;
                }
            }
    
            //执行sql语句(用于批量操作)
            public static int BatchExecuteNonQuery(string cmdText, params object[] p)
            {
                try
                {
                    PrepareCommand(cmd, conn, cmdText, p);
                    return cmd.ExecuteNonQuery();
                }
                catch (System.Exception ex)
                {
                    return -1;
                }
            }
    
            //返回SqlDataReader对象
            public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
            {
                SQLiteCommand command = new SQLiteCommand();
                SQLiteConnection connection = GetSQLiteConnection();
                try
                {
                    PrepareCommand(command, connection, cmdText, p);
                    SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
                    return reader;
                }
                catch (Exception ex)
                {
                    connection.Close();
                    return null;
                }
            }
    
            //返回结果集中的第一行第一列,忽略其他行或列
            public static object ExecuteScalar(string cmdText, params object[] p)
            {
                try
                {
                    SQLiteCommand cmd = new SQLiteCommand();
                    using (SQLiteConnection connection = GetSQLiteConnection())
                    {
                        PrepareCommand(cmd, connection, cmdText, p);
                        return cmd.ExecuteScalar();
                    }
                }
                catch (System.Exception ex)
                {
                    return null;
                }
            }
    
            //分页
            public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
            {
                if (recordCount < 0)
                    recordCount = int.Parse(ExecuteScalar(countText, p).ToString());
                DataSet ds = new DataSet();
                SQLiteCommand command = new SQLiteCommand();
                using (SQLiteConnection connection = GetSQLiteConnection())
                {
                    PrepareCommand(command, connection, cmdText, p);
                    SQLiteDataAdapter da = new SQLiteDataAdapter(command);
                    da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
                }
                return ds;
            }
        }
    }


    {
    Config.Add(reader.GetString(0));
    Config.Add(reader.GetString(1));
    }
    }
    if (Config != null && Config.Count > 1)
    {
    IPAddress = Config[0];
    FeedType = Config[1];
    }
    }
    catch
    {

    }

    }

  • 相关阅读:
    将ip地址转成二进制数据,除基本输入输出不调用库函数实现
    将ip地址转成二进制数据
    一种合并链表方法实现 严蔚敏 数据结构
    阿里巴巴集团2014年校园招聘系统工程师北京笔试题
    显示模态模态对话框和非模态对话框
    MFC中利用CString和Format成员函数将数字格式化输出
    ObjectARX2012错误1 fatal error C1083: 无法打开包括文件:“arxHeaders.h”: No such file or directory; fatal error C1083: 无法打开包括文件:“map”: No such file or directory
    Metasploit 读书笔记-神器Meterpreter
    解决:kali linux 在vmware 虚拟机中使用bridge模式上网的问题
    metasploit 读书笔记-EXPLOITATION
  • 原文地址:https://www.cnblogs.com/xyyshishuaige/p/8661449.html
Copyright © 2020-2023  润新知