예제 #1
0
        public bool CreateFuzzyDatabase(FdbEntity fdb)
        {
            String query = String.Empty;

            try
            {
                SQLiteConnection.CreateFile(fdb.FdbPath);
                SqliteConnection connection = new SqliteConnection(fdb.ConnString);

                // Record set of schemes to the database system
                query = "";
                query += "CREATE TABLE SystemScheme ( ";
                query += "ID INT, ";
                query += "SchemeName NVARCHAR(200) ";
                query += " );";

                if (!connection.CreateTable(query))
                {
                    throw new Exception(connection.ErrorMessage);
                }

                // Record set of relations to the database system
                query = "";
                query += "CREATE TABLE SystemRelation ( ";
                query += "ID INT, ";
                query += "RelationName NVARCHAR(200), ";
                query += "SchemeID INT ";
                query += " );";

                if (!connection.CreateTable(query))
                {
                    throw new Exception(connection.ErrorMessage);
                }

                // Record set of attributes to the database system
                query = "";
                query += "CREATE TABLE SystemAttribute ( ";
                query += "ID INT, ";
                query += "PrimaryKey NVARCHAR(10), ";
                query += "AttributeName NVARCHAR(200), ";
                query += "DataType NVARCHAR(200), ";
                query += "Domain TEXT, ";
                query += "Description TEXT, ";
                query += "SchemeID INT ";
                query += " ); ";

                if (!connection.CreateTable(query))
                {
                    throw new Exception(connection.ErrorMessage);
                }
                // Record set of queries to the database system
                query = "";
                query += "CREATE TABLE SystemQuery ( ";
                query += "ID INT, ";
                query += "QueryName NVARCHAR(200), ";
                query += "QueryString TEXT ";
                query += " );";

                if (!connection.CreateTable(query))
                {
                    throw new Exception(connection.ErrorMessage);
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("ERROR:\n" + ex.Message);
                throw new Exception("ERROR:\n" + ex.Message);
                return false;
            }

            return true;
        }
예제 #2
0
        public bool SaveFuzzyDatabase(FdbEntity fdb)
        {
            //To do here...
            try
            {
                String query = String.Empty;
                SqliteConnection connection = new SqliteConnection(fdb.ConnString);

                ///Save Name//////////////////////////////////////////////////////////////////////////////////

                ///Save Schemes///////////////////////////////////////////////////////////////////////////////
                int schemeID = 0;

                foreach (FzSchemeEntity s in fdb.Schemes)
                {
                    /// Update <Scheme> to System Scheme Table //////////////////////////////////////////////
                    String schemeName = s.SchemeName;
                    schemeID++;

                    query = "";
                    query += "INSERT INTO SystemScheme VALUES (";
                    query += schemeID + ",";
                    query += "'" + schemeName + "'";
                    query += " );";

                    if (!connection.Update(query))
                    {
                        throw new Exception(connection.ErrorMessage);
                    }

                    ///Save attributes of the scheme to the System Attribute Table /////////////////////////
                    if (s.Attributes.Count > 0)
                    {
                        int attributeID = 0;

                        foreach (FzAttributeEntity attr in s.Attributes)
                        {
                            attributeID++;

                            query = "";
                            query += "INSERT INTO SystemAttribute VALUES ( ";
                            query += attributeID + ",";
                            query += "'" + attr.PrimaryKey + "'" + ",";
                            query += "'" + attr.AttributeName + "'" + ",";
                            query += "'" + attr.DataType.TypeName + "'" + ",";
                            query += "'" + attr.DataType.DomainString + "'" + ",";
                            query += "'" + attr.Description + "'" + ",";
                            query += schemeID;
                            query += " );";

                            if (!connection.Update(query))
                            {
                                throw new Exception(connection.ErrorMessage);
                            }
                        }
                    }
                }
                //System.Windows.Forms.MessageBox.Show("Save scheme OK");
                ///Save Relations //////////////////////////////////////////////////////////////////////////
                int relationID = 0;

                foreach (FzRelationEntity relation in fdb.Relations)
                {
                    //int schemeID = 0;
                    relationID++;
                    String relationName = relation.RelationName;
                    schemeID = connection.GetSchemeID(relation.Scheme.SchemeName);

                    query = "";
                    query += "INSERT INTO SystemRelation VALUES ( ";
                    query += relationID + ",";
                    query += "'" + relationName + "'" + ",";
                    query += schemeID;
                    query += " );";

                    if (!connection.Update(query))
                    {
                        throw new Exception(connection.ErrorMessage);
                    }
                    //System.Windows.Forms.MessageBox.Show("insert to system relaton ok");
                    ///Create Table <Relation> ////////////////////////////////////////////////
                    if (relation.Scheme.Attributes.Count > 0)
                    {
                        query = "";
                        query += "CREATE TABLE " + relationName + " ( ";

                        foreach (FzAttributeEntity attribute in relation.Scheme.Attributes)
                        {
                            query += attribute.AttributeName + " " + "TEXT" + ", ";
                        }

                        query = query.Remove(query.LastIndexOf(','), 1);
                        query += " ); ";

                        if (!connection.CreateTable(query))
                        {
                            throw new Exception(connection.ErrorMessage);
                        }
                    }
                    //System.Windows.Forms.MessageBox.Show("create table relation ok!");
                    ///Insert tuples into Talbe <Relation> ////////////////////////////////////
                    if (relation.Tuples.Count > 0)
                    {
                        foreach (FzTupleEntity tuple in relation.Tuples)
                        {
                            query = "";
                            query += "INSERT INTO " + relationName + " VALUES (";

                            foreach (var value in tuple.ValuesOnPerRow)
                            {
                                query += "'" + value + "'" + ",";
                            }
                            query = query.Remove(query.LastIndexOf(','), 1);
                            query += " );  ";

                            if (!connection.Update(query))
                            {
                                throw new Exception(connection.ErrorMessage);
                            }
                        }
                    }
                }
                //System.Windows.Forms.MessageBox.Show("Insert to tuple ok");
                ///Save queries////////////////////////////////////////////////////////////////
                int queryID = 0;

                foreach (FzQueryEntity q in fdb.Queries)
                {
                    queryID++;
                    query = "";
                    query += "INSERT INTO SystemQuery VALUES (";
                    query += queryID + ",";
                    query += "'" + q.QueryName + "'" + ",";
                    query += "'" + q.QueryString + "'";
                    query += " );";

                    if (!connection.Update(query))
                    {
                        throw new Exception(connection.ErrorMessage);
                    }
                }

                connection.CloseConnect();
            }
            catch (SQLiteException ex)
            {
                throw new Exception("ERROR:\n" + ex.Message);
            }

            return true;
        }