Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLite数据库未打开错误_C#_Sql_Sqlite - Fatal编程技术网

C# SQLite数据库未打开错误

C# SQLite数据库未打开错误,c#,sql,sqlite,C#,Sql,Sqlite,我有一个构造函数,它从SQL Server数据库获取数据并将其放入本地SQLite数据库: public ForemanController() { connectionString.DataSource = "dxdb02v"; connectionString.InitialCatalog = "QTRAX4619410"; connectionString.UserID = "tunnelld";

我有一个构造函数,它从SQL Server数据库获取数据并将其放入本地SQLite数据库:

public ForemanController()
        {
            connectionString.DataSource = "dxdb02v";
            connectionString.InitialCatalog = "QTRAX4619410";
            connectionString.UserID = "tunnelld";
            connectionString.Password = "david";

            string queryString = "SELECT * FROM [QTRAXAdmin].[vwQT_Foreman]";

            List<Foreman> list;
            // Creates a SQL connection
            using (var connection = new SqlConnection(connectionString.ToString()))
            {
                using (var command = new SqlCommand(queryString, connection))
                {
                    connection.Open();
                    using (var reader = command.ExecuteReader())
                    {
                        list = new List<Foreman>();
                        while (reader.Read())
                        {
                            list.Add(new Foreman { ForeBadge = reader.GetString(0), ForeName = reader.GetString(1) });
                        }
                    }
                }
                connection.Close();
                allForeman = list.ToArray();
            }
            string deleteSQL = "DELETE FROM Foreman;";
            using (SQLiteConnection SQLconn1 = new SQLiteConnection(SQLiteConnectionString))
            {
                using (var command = new SQLiteCommand(deleteSQL, SQLconn1))
                {
                    command.Connection.Open();
                    command.ExecuteNonQuery();
                }
            }

            using (SQLiteConnection SQLconn2 = new SQLiteConnection(SQLiteConnectionString))
            {
                SQLiteCommand cmd2 = SQLconn2.CreateCommand();
                foreach (Foreman row in allForeman)
                {
                    cmd2.CommandText = "INSERT INTO Foreman (ForeBadge, ForeName) VALUES (@param1, @param2);";
                    cmd2.Parameters.Add(new SQLiteParameter("@param1", row.ForeBadge));
                    cmd2.Parameters.Add(new SQLiteParameter("@param2", row.ForeName));
                    cmd2.ExecuteNonQuery();
                }
            }
        }
我得到了这个错误:


那是因为那是你唯一忘记打开连接的地方

SQLConn2.Open();

添加以下内容:
SQLconn2.Open()

您忘记打开连接

SQLConn2.Open();

很明显,你不像其他人那样打开它。您需要一个
SQLconn2.Open()
cmd2.Connection.Open()
where.missing
SQLconn2.Open()旁注-这在类构造函数中做得太多了。我会认真地重新考虑将其作为一个单独的方法(或一组方法)。构造函数应该是轻量级的,并且不应该抛出任何异常(因为它们更难调试)。这可能很明显,但是为什么我不需要为DELETE语句打开连接呢?您确实需要为DELETE语句打开连接:
command.connection.open()