Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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# C在代码中创建SQLite数据库时出现异常SQL逻辑错误或缺少数据库错误_C#_Database_Sqlite - Fatal编程技术网

C# C在代码中创建SQLite数据库时出现异常SQL逻辑错误或缺少数据库错误

C# C在代码中创建SQLite数据库时出现异常SQL逻辑错误或缺少数据库错误,c#,database,sqlite,C#,Database,Sqlite,我有一个带.NET4.0的c应用程序试图用代码创建SQLite数据库 我使用的是System.Data.SQLite版本1.0.94.0 这是我的密码 public void CreateDatabaseFile() { ClassGlobalVars.MyLogger.LogStatus("Creating New Database"); SQLiteConnection.CreateFile(ClassGlobalVars.StrDBP

我有一个带.NET4.0的c应用程序试图用代码创建SQLite数据库

我使用的是System.Data.SQLite版本1.0.94.0

这是我的密码

        public void CreateDatabaseFile()
    {
        ClassGlobalVars.MyLogger.LogStatus("Creating New Database");
        SQLiteConnection.CreateFile(ClassGlobalVars.StrDBPath);

        using (SQLiteConnection sqlConnect = new SQLiteConnection("Data Source=" + ClassGlobalVars.StrDBPath + ";Version=3;", true))
        {
            sqlConnect.Open();

            using (SQLiteTransaction transaction = sqlConnect.BeginTransaction())
            {
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_DataSync] ([tbds_ID] INTEGER  PRIMARY KEY NOT NULL,[tbds_DataName] VARCHAR(50)  NOT NULL, [tbds_DataKey] VARCHAR(255)  NOT NULL, [tbds_User] VARCHAR(50)  NULL);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create index
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUEDATASYNC] ON [tb_DataSync] ([tbds_User], [tbds_DataName]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //Insert First Values
                using (var sqlCommand = new SQLiteCommand("INSERT INTO tb_DataSync([tbds_DataName],[tbds_DataKey],[tbds_User]) VALUES('dbversion','2.4','ALL')", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //Create Profiles
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_Profiles] ([tbp_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [tbp_amUserName] VARCHAR(50), [tbp_FirstName] VARCHAR(50),[tbp_LastName] VARCHAR(50), [tbp_Gender] VARCHAR(10), [tbp_Login] VARCHAR(255), [tbp_Password] TEXT, [tbp_Email] VARCHAR(50), [tbp_Address1] VARCHAR(255), [tbp_Address2] VARCHAR(255), [tbp_City] VARCHAR(50), [tbp_State] VARCHAR(255), [tbp_Zip] VARCHAR(10), [tbp_Country] VARCHAR(50), [tbp_GEO] VARCHAR(255), [tbp_Telephone] VARCHAR(25), [tbp_SiteTitle] VARCHAR(50), [tbp_SiteUrl] VARCHAR(255), [tbp_ClickBank] VARCHAR(25), [tbp_Paypal] VARCHAR(255), [tbp_Payza] VARCHAR(50), [tbp_Twitter] VARCHAR(50), [tbp_FaceBook] VARCHAR(50), [tbp_Google] VARCHAR(50), [tbp_Skype] VARCHAR(50), [tbp_Yahoo] VARCHAR(50), [tbp_AIM] VARCHAR(50), [tbp_MSN] VARCHAR(50));", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //Index for profiles
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUEUSERNAME] ON [tb_Profiles] ([tbp_amUserName]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //Create Settings Table
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_Settings] ([tbs_setID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,  [tbs_setMemberUserName] VARCHAR(50), [tbs_setName] VARCHAR(50), [tbs_setValue1] TEXT, [tbs_setValue2] TEXT);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //Index for Settings
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUENAMESET] ON [tb_Settings] ([tbs_setMemberUserName], [tbs_setName]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create traffic exchange Data
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_teData] ([tbted_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [tbted_Domain] VARCHAR(50) NOT NULL, [tbted_Title] VARCHAR(50) NOT NULL, [tbted_SignUpUrl] VARCHAR(255), [tbted_ReferralUrl] VARCHAR(255), [tbted_LoginUrl] VARCHAR(255), [tbted_MemberUrl] VARCHAR(255), [tbted_SurfUrl] VARCHAR(255), [tbted_IsSurfAjax] BOOLEAN NOT NULL DEFAULT 0, [tbted_AfterXDaysDeleted] INTEGER(3) NOT NULL DEFAULT 0, [tbted_AfterXDaysInActive] INTEGER(3) NOT NULL DEFAULT 0, [tbted_TabTimerSecDefault] INTEGER(3) NOT NULL DEFAULT 0, [tbted_IsEmail] BOOLEAN NOT NULL DEFAULT 0, [tbted_IsNumeric] BOOLEAN NOT NULL DEFAULT 0, [tbted_IsUserName] BOOLEAN NOT NULL DEFAULT 0, [tbted_LoginCode] TEXT, [tbted_SignupCode] TEXT, [tbted_PrizePages] TEXT, [tbted_SecurityPages] TEXT, [tbted_ServerDateRevision] INTEGER(12) NOT NULL DEFAULT 0, [tbted_IsActive] BOOLEAN NOT NULL DEFAULT 0, [tbted_IsCustomTE] BOOLEAN NOT NULL DEFAULT 0);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 1 index for TE Data
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUEDOMAIN] ON [tb_teData] ([tbted_Domain]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create traffic exchange User Data
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_teDataUser] ([tbtedu_ID] INTEGER NOT NULL PRIMARY KEY, [tbtedu_amUserID] INT(10) NOT NULL,[tbtedu_amUserName] VARCHAR(50),[tbtedu_Domain] VARCHAR(50) NOT NULL, [tbtedu_ReferralID] VARCHAR(50), [tbtedu_ReferralIDDefault] VARCHAR(50),[tbtedu_Login] VARCHAR(50), [tbtedu_Password] TEXT, [tbtedu_TabTimerSec] INTEGER(3), [tbtedu_Notes] TEXT, [tbtedu_myRating] INTEGER(2) DEFAULT 0,[tbtedu_IsFavorite] BOOLEAN(1) NOT NULL DEFAULT 0,   [tbtedu_IsUpgraded] BOOLEAN(1) NOT NULL DEFAULT 0, [tbtedu_IsLifeTime] BOOLEAN(1) NOT NULL DEFAULT 0, [tbtedu_ZoomLevel] DOUBLE(2) NOT NULL DEFAULT (0.00), [tbtedu_ServerDateRevision] INTEGER(12) NOT NULL DEFAULT 0, [tbtedu_IsModified] BOOLEAN(1) DEFAULT 0);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 1 for TEUserData
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUEFORDATAUSERIDANDUSERNAMEANDUSERDOMAIN] ON [tb_teDataUser] ([tbtedu_amUserID], [tbtedu_amUserName], [tbtedu_Domain]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 2 for TEUserData
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUETEFORDATAUSERID] ON [tb_teDataUser] ([tbtedu_amUserID], [tbtedu_Domain]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 3 for TEUserData
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUETEFORDATAUSERNAME] ON [tb_teDataUser] ([tbtedu_amUserName], [tbtedu_Domain]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create groups
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_teGroups] ([tbteg_ID] INTEGER NOT NULL PRIMARY KEY, [tbteg_amUserID] INT(12) NOT NULL,[tbteg_amUserName] VARCHAR(50),[tbteg_GroupName] VARCHAR(50), [tbteg_GroupValue] TEXT, [tbteg_ServerDateRevision] INT(12) NOT NULL DEFAULT 1,[tbteg_IsModified] BOOLEAN(1) DEFAULT 0, [tbteg_IsActive] BOOLEAN(1) NOT NULL DEFAULT 1);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 1 for GROUPS
                using (var sqlCommand = new SQLiteCommand("CREATE INDEX [REVISIONCHECK] ON [tb_teGroups] ([tbteg_amUserID], [tbteg_ServerDateRevision]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create Index 2 for GROUPS
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UniqueGroupName] ON [tb_teGroups] ([tbteg_amUserID], [tbteg_amUserName], [tbteg_GroupName]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create TE Stats Table
                using (var sqlCommand = new SQLiteCommand("CREATE TABLE [tb_teStatistics] ([tbtes_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,[tbtes_amUserID] INT(10) NOT NULL,[tbtes_teDomain] VARCHAR(50) NOT NULL,[tbtes_isoDate] INTEGER(10) NOT NULL,[tbtes_dateTime] VARCHAR(20) NOT NULL,[tbtes_clickNum] INTEGER(4) DEFAULT 0,[tbtes_isReported] BOOLEAN DEFAULT 0);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create index 1 for TE STats Table
                using (var sqlCommand = new SQLiteCommand("CREATE INDEX [INDEX_DATETIME] ON [tb_teStatistics] ([tbtes_dateTime]);", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                //create index 2 for TE STats Table
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUE_CLICK_STATS] ON [tb_teStatistics] ([tbtes_amUserID], [tbtes_isoDate], [tbtes_teDomain]) WHERE tbtes_isReported = 0;", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery();
                }

                transaction.Commit();
            }

        }

    }
我收到System.Data.SQLite.exception SQL逻辑错误或缺少数据库的异常

在这行代码中

                    //create index 2 for TE STats Table
                using (var sqlCommand = new SQLiteCommand("CREATE UNIQUE INDEX [UNIQUE_CLICK_STATS] ON [tb_teStatistics] ([tbtes_amUserID], [tbtes_isoDate], [tbtes_teDomain]) WHERE tbtes_isReported = 0;", sqlConnect))
                {
                    sqlCommand.ExecuteNonQuery(); ///ERROR EXCEPTION RIGHT HERE
                }
我已经看过很多次这段代码,但我无法找出问题所在。这在我的电脑上效果很好,但在一些客户的电脑上失败了。我只收到上面提到的带有行和错误的堆栈跟踪

我将数据库保存在documents文件夹中

C:\Users\%USER%\Documents\APPNAME\mydatabase.db3

你能看出我的错误吗

提前谢谢

编辑:它会因为是事务中的最后一个sql而出错,并且由于权限的原因它实际上没有创建数据库吗

还是存在SQL错误


谢谢。

此查询在数据库管理器上有效吗?是的。。这几乎是我的sqlite数据库管理器的复制和粘贴。该程序可能无法生成数据库吗?