Доступ к пути запрещен при создании базы данных sqlite по заданному пути
Я пытаюсь создать новый файл базы данных SQLite,если он не существует, но каждый раз, когда он выдает исключение, доступ к нему запрещен.
Я попробовал путь другого диска,но тогда он создает пустой файл базы данных без какой-либо таблицы.
и у пользователя может не быть другого диска,поэтому он пытался создать его только на диске C.
Может ли кто-нибудь сказать, как решить эту проблему?
Ниже приведен код, который я пробовал.
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Data.SQLite; using System.Linq; using System.Text; using System.Threading.Tasks; namespace tthhSensorCalibrator { public class DatabaseOperations { // OutputOfPort portOutput = new OutputOfPort(); public void databaseMethod(string s1l, string s1h, string s2l, string s2h) { // This is the query which will create a new table in our database file with three columns. An auto increment column called "ID". string createTableQuery = @"CREATE TABLE IF NOT EXISTS [Log] ( [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Date] VARCHAR(2048) NULL, [Time] VARCHAR(2048) NULL, [S1L] VARCHAR(2048) NULL, [S1H] VARCHAR(2048) NULL, [S2L] VARCHAR(2048) NULL, [S2H] VARCHAR(2048) NULL )"; string path = "C:\\"; if (!System.IO.File.Exists(path + "databaseFile.db3")) { SQLiteConnection.CreateFile(path + "databaseFile.db3"); // Create the file which will be hosting our database } else { using (System.Data.SQLite.SQLiteConnection con = new System.Data.SQLite.SQLiteConnection(@"Data source="+ path + "databaseFile.db3")) { using (System.Data.SQLite.SQLiteCommand com = new System.Data.SQLite.SQLiteCommand(con)) { con.Open(); // Open the connection to the database com.CommandText = createTableQuery; // Set CommandText to our query that will create the table com.ExecuteNonQuery(); // Execute the query string Date = DateTime.Now.ToShortDateString(); string Time = DateTime.Now.ToShortTimeString(); com.CommandText = "INSERT INTO Log (Date,Time,S1L,S1H,S2L,S2H) Values (@param1,@param2,@param3,@param4,@param5,@param6)"; // Add the first entry into our database com.CommandType = System.Data.CommandType.Text; com.Parameters.Add(new SQLiteParameter("@param1", Date)); com.Parameters.Add(new SQLiteParameter("@param2", Time)); com.Parameters.Add(new SQLiteParameter("@param3", s1l)); com.Parameters.Add(new SQLiteParameter("@param4", s1h)); com.Parameters.Add(new SQLiteParameter("@param5", s2l)); com.Parameters.Add(new SQLiteParameter("@param6", s2h)); com.ExecuteNonQuery(); // Execute the query com.CommandText = "Select * FROM Log"; // Select all rows from our database table using (System.Data.SQLite.SQLiteDataReader reader = com.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["Date"] + " : " + reader["Time"]); // Display the value } } con.Close(); // Close the connection to the database } } } } } }
F-ES Sitecore
Я не эксперт по Windows, но я считаю, что вам нужны какие-то специальные права для создания файлов в корневой папке, поэтому Microsoft в основном пытается препятствовать этой практике. Вместо этого создайте свою базу данных в папке.
Nishikant Tayade
Попробовал папку но все равно безрезультатно
F-ES Sitecore
Это проблема, на которой вам нужно сосредоточиться, чтобы исправить, если она не работала в папке, она не будет работать в root, вы просто маскируете свою реальную проблему с этой проблемой разрешений.
Gerry Schmitz
Вы никогда не проверяете ни один из кодов возврата.
Как ты собираешься узнать, что происходит?
Вы не.