• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Database类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.apache.ddlutils.model.Database的典型用法代码示例。如果您正苦于以下问题:Java Database类的具体用法?Java Database怎么用?Java Database使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Database类属于org.apache.ddlutils.model包,在下文中一共展示了Database类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: dropTable

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Outputs the DDL required to drop the given table. This method also
 * drops foreign keys to the table.
 * 
 * @param database The database
 * @param table    The table
 */
public void dropTable(Database database, Table table) throws IOException
{
    // we're dropping the foreignkeys to the table first
    for (int idx = database.getTableCount() - 1; idx >= 0; idx--)
    {
        Table        otherTable = database.getTable(idx);
        ForeignKey[] fks        = otherTable.getForeignKeys();

        for (int fkIdx = 0; (fks != null) && (fkIdx < fks.length); fkIdx++)
        {
            if (fks[fkIdx].getForeignTable().equals(table))
            {
                dropForeignKey(otherTable, fks[fkIdx]);
            }
        }
    }
    // and the foreign keys from the table
    dropForeignKeys(table);

    writeTableComment(table);
    dropTable(table);
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:30,代码来源:SqlBuilder.java


示例2: readTableElements

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Reads table elements from the XML stream reader and adds them to the given
 * database model.
 * 
 * @param xmlReader The reader
 * @param model     The database model to add the table objects to
 */
private void readTableElements(XMLStreamReader xmlReader, Database model) throws XMLStreamException, IOException
{
    int eventType = XMLStreamReader.START_ELEMENT;

    while (eventType != XMLStreamReader.END_ELEMENT)
    {
        eventType = xmlReader.next();
        if (eventType == XMLStreamReader.START_ELEMENT)
        {
            if (isSameAs(xmlReader.getName(), QNAME_ELEMENT_TABLE)) {
                model.addTable(readTableElement(xmlReader));
            }
            else {
                readOverElement(xmlReader);
            }
        }
    }
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:26,代码来源:DatabaseIO.java


示例3: getCreateModelSql

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * {@inheritDoc}
 */
public String getCreateModelSql(Database model, CreationParameters params, boolean dropTablesFirst, boolean continueOnError)
{
    String sql = null;

    try
    {
        StringWriter buffer = new StringWriter();

        getSqlBuilder().setWriter(buffer);
        getSqlBuilder().createTables(model, params, dropTablesFirst);
        sql = buffer.toString();
    }
    catch (IOException e)
    {
        // won't happen because we're using a string writer
    }
    return sql;
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:22,代码来源:PlatformImplBase.java


示例4: createTables

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Outputs the DDL required to drop (if requested) and (re)create all tables in the database model.
 * 
 * @param database   The database
 * @param params     The parameters used in the creation
 * @param dropTables Whether to drop tables before creating them
 */
public void createTables(Database database, CreationParameters params, boolean dropTables) throws IOException
{
    if (dropTables)
    {
        dropTables(database);
    }

    for (int idx = 0; idx < database.getTableCount(); idx++)
    {
        Table table = database.getTable(idx);

        writeTableComment(table);
        createTable(database,
                    table,
                    params == null ? null : params.getParametersFor(table));
    }

    // we're writing the external foreignkeys last to ensure that all referenced tables are already defined
    createForeignKeys(database);
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:28,代码来源:SqlBuilder.java


示例5: testNoTables

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests a database model without tables.
 */
public void testNoTables() throws Exception
{
    Database model = readModel(
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "</database>");

    assertEquals("test",
                 model.getName());
    assertEquals(0,
                 model.getTableCount());

    assertEquals(
        "<?xml version='1.0' encoding='UTF-8'?>\n" +
        "<database xmlns=\"" + DatabaseIO.DDLUTILS_NAMESPACE + "\" name=\"test\" />\n",
        model);
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:20,代码来源:TestDatabaseIO.java


示例6: testSingleTablesWithSelfReferencingFK

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests the removal of a table with a self-referencing foreign key. 
 */
public void testSingleTablesWithSelfReferencingFK()
{
    final String modelXml = 
        "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='roundtriptest'>\n"+
        "  <table name='roundtrip'>\n"+
        "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
        "    <column name='avalue' type='INTEGER'/>\n"+
        "    <foreign-key foreignTable='roundtrip'>\n"+
        "      <reference local='avalue' foreign='pk'/>\n"+
        "    </foreign-key>\n"+
        "  </table>\n"+
        "</database>";

    createDatabase(modelXml);

    DatabaseToDdlTask task = getDatabaseToDdlTaskInstance();

    task.addDropTables(new DropTablesCommand());
    task.execute();

    assertEquals(new Database("roundtriptest"),
                 readModelFromDatabase("roundtriptest"),
                 false);
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:29,代码来源:TestDropTablesCommand.java


示例7: testSameDefaultValueExpressedDifferently

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests that shows that the same default value expressed differently does not
 * result in a change.
 */
public void testSameDefaultValueExpressedDifferently()
{
    final String MODEL1 = 
        "<?xml version='1.0' encoding='ISO-8859-1'?>\n" +
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "  <table name='TableA'>\n" +
        "    <column name='ColPK' type='INTEGER' primaryKey='true' required='true'/>\n" +
        "    <column name='Col' type='DOUBLE' default='10'/>\n" +
        "  </table>\n" +
        "</database>";
    final String MODEL2 = 
        "<?xml version='1.0' encoding='ISO-8859-1'?>\n" +
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "  <table name='TABLEA'>\n" +
        "    <column name='COLPK' type='INTEGER' primaryKey='true' required='true'/>\n" +
        "    <column name='COL' type='DOUBLE' default='1e+1'/>\n" +
        "  </table>\n" +
        "</database>";

    Database model1  = parseDatabaseFromString(MODEL1);
    Database model2  = parseDatabaseFromString(MODEL2);
    List     changes = getPlatform(false).getChanges(model1, model2);

    assertTrue(changes.isEmpty());
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:30,代码来源:TestTableComparison.java


示例8: testColumnNameShortAndValueLong

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests the reader & writer behavior when a column name is a normal valid tag,
 * and the column name is shorter than 255 characters but the value is longer.
 */
public void testColumnNameShortAndValueLong() throws Exception
{
    Database model = readModel(
        "<?xml version='1.0' encoding='UTF-8'?>\n"+
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "  <table name='test'>\n"+
        "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"+
        "    <column name='value' type='VARCHAR' size='400' required='true'/>\n"+
        "  </table>\n"+
        "</database>");
    String testedValue = StringUtils.repeat("Some Text", 40);

    SqlDynaBean bean = (SqlDynaBean)model.createDynaBeanFor(model.getTable(0));

    bean.set("id", new Integer(1));
    bean.set("value", testedValue);

    roundtripTest(model, bean, "UTF-8",
                  "<?xml version='1.0' encoding='UTF-8'?>\n" +
                  "<data>\n" +
                  "  <test id=\"1\">\n" +
                  "    <value>" + testedValue + "</value>\n" +
                  "  </test>\n" +
                  "</data>\n");
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:30,代码来源:TestDataReaderAndWriter.java


示例9: readDatabaseElement

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Reads a database element from the XML stream reader.
 * 
 * @param xmlReader The reader
 * @return The database object
 */
private Database readDatabaseElement(XMLStreamReader xmlReader) throws XMLStreamException, IOException
{
    Database model = new Database();

    for (int idx = 0; idx < xmlReader.getAttributeCount(); idx++)
    {
        QName attrQName = xmlReader.getAttributeName(idx);

        if (isSameAs(attrQName, QNAME_ATTRIBUTE_NAME))
        {
            model.setName(xmlReader.getAttributeValue(idx));
        }
        else if (isSameAs(attrQName, QNAME_ATTRIBUTE_DEFAULT_ID_METHOD))
        {
            model.setIdMethod(xmlReader.getAttributeValue(idx));
        }
        else if (isSameAs(attrQName, QNAME_ATTRIBUTE_VERSION))
        {
            model.setVersion(xmlReader.getAttributeValue(idx));
        }
    }
    readTableElements(xmlReader, model);
    consumeRestOfElement(xmlReader);
    return model;
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:32,代码来源:DatabaseIO.java


示例10: getDropModelSql

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * {@inheritDoc}
 */
public String getDropModelSql(Database model) 
{
    String sql = null;

    try
    {
        StringWriter buffer = new StringWriter();

        getSqlBuilder().setWriter(buffer);
        getSqlBuilder().dropTables(model);
        sql = buffer.toString();
    }
    catch (IOException e)
    {
        // won't happen because we're using a string writer
    }
    return sql;
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:22,代码来源:PlatformImplBase.java


示例11: getConfiguredDataReader

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
     * Returns a data reader instance configured for the given platform (which needs to
     * be connected to a live database) and model.
     * 
     * @param platform The database
     * @param model    The model
     * @return The data reader
     */
    public DataReader getConfiguredDataReader(Platform platform, Database model) throws DdlUtilsException
    {
        DataToDatabaseSink sink     = new DataToDatabaseSink(platform, model);
        DataReader         reader   = new DataReader();

        sink.setHaltOnErrors(_failOnError);
        sink.setEnsureForeignKeyOrder(_ensureFKOrder);
        sink.setUseBatchMode(_useBatchMode);
        if (_batchSize != null)
        {
            sink.setBatchSize(_batchSize.intValue());
        }
        
        reader.setModel(model);
// GemStone changes BEGIN
        reader.setCaseSensitive(platform.isDelimitedIdentifierModeOn());
// GemStone changes END
        reader.setSink(sink);
        registerConverters(reader.getConverterConfiguration());
        return reader;
    }
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:30,代码来源:DatabaseDataIO.java


示例12: apply

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * {@inheritDoc}
 */
public void apply(Database database, boolean caseSensitive)
{
    // we only need to replace the table in the model, as there can't be a
    // foreign key from or to it when these kind of changes are created
    for (int tableIdx = 0; tableIdx < database.getTableCount(); tableIdx++)
    {
        Table curTable = database.getTable(tableIdx);

        if ((caseSensitive  && curTable.getQualifiedName().equals(getChangedTable())) ||
            (!caseSensitive && curTable.getQualifiedName().equalsIgnoreCase(getChangedTable())))
        {
            database.removeTable(tableIdx);
            database.addTable(tableIdx, new CloneHelper().clone(_targetTable, true, false, database, caseSensitive));
            break;
        }
    }
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:21,代码来源:RecreateTableChange.java


示例13: testZDeleteClient

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Test which copies a client, then deletes it, and then tests that the foreign keys are still
 * activated
 */
@Test
public void testZDeleteClient() {
  Platform platform = SystemService.getInstance().getPlatform();
  ExcludeFilter excludeFilter = DBSMOBUtil.getInstance().getExcludeFilter(
      new File(OBPropertiesProvider.getInstance().getOpenbravoProperties()
          .getProperty("source.path")));
  Database dbBefore = platform.loadTablesFromDatabase(excludeFilter);
  String newClientId = exportImport(QA_TEST_CLIENT_ID);
  Client client = OBDal.getInstance().get(Client.class, newClientId);

  SystemService.getInstance().deleteClient(client);
  Database dbAfter = platform.loadTablesFromDatabase(excludeFilter);
  for (int i = 0; i < dbBefore.getTableCount(); i++) {
    Table table1 = dbBefore.getTable(i);
    Table table2 = dbAfter.getTable(i);
    for (int j = 0; j < table1.getForeignKeyCount(); j++) {
      assertTrue(table1.getForeignKey(j).equals(table2.getForeignKey(j)));
    }
  }
}
 
开发者ID:mauyr,项目名称:openbravo-brazil,代码行数:25,代码来源:ClientExportImportTest.java


示例14: testColumnNameIsBase64

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests the reader & writer behavior when a column name is 'base64'.
 */
public void testColumnNameIsBase64() throws Exception
{
    Database model = readModel(
        "<?xml version='1.0' encoding='UTF-8'?>\n"+
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "  <table name='test'>\n"+
        "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"+
        "    <column name='" + DatabaseIO.BASE64_ATTR_NAME + "' type='VARCHAR' size='50' required='true'/>\n"+
        "  </table>\n"+
        "</database>");
    String testedValue = "Some Text";

    SqlDynaBean bean = (SqlDynaBean)model.createDynaBeanFor(model.getTable(0));

    bean.set("id", new Integer(1));
    bean.set(DatabaseIO.BASE64_ATTR_NAME, testedValue);

    roundtripTest(model, bean, "UTF-8",
                  "<?xml version='1.0' encoding='UTF-8'?>\n" +
                  "<data>\n" +
                  "  <test id=\"1\">\n" +
                  "    <column column-name=\"" + DatabaseIO.BASE64_ATTR_NAME + "\">" + testedValue + "</column>\n" +
                  "  </test>\n" +
                  "</data>\n");
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:29,代码来源:TestDataReaderAndWriter.java


示例15: performConstraintsTest

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests a nullable column. Basically we're creating the test database
 * and then read it back and compare the original with the read one.
 * In addition we can also check that DdlUtils does not try to alter the new
 * database when using the <code>alterTables</code>/<code>getAlterTablesSql</code>
 * methods of the {@link org.apache.ddlutils.Platform} with the read-back model.
 * 
 * @param modelXml        The model to be tested in XML form
 * @param checkAlteration Whether to also check the alter tables sql
 */
protected void performConstraintsTest(String modelXml, boolean checkAlteration)
{
    createDatabase(modelXml);

    Database modelFromDb = readModelFromDatabase("roundtriptest");
    
    assertEquals(getAdjustedModel(),
    		     modelFromDb);

    if (checkAlteration)
    {
     String alterTablesSql = getAlterTablesSql(modelFromDb).trim();
	
     assertTrue(alterTablesSql.length() == 0);
    }
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:27,代码来源:TestConstraints.java


示例16: execute

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * {@inheritDoc}
 */
public void execute(DatabaseTaskBase task, Database model) throws BuildException
{
    if (_outputFile == null)
    {
        throw new BuildException("No output file specified");
    }
    if (_outputFile.exists() && !_outputFile.canWrite())
    {
        throw new BuildException("Cannot overwrite output file " + _outputFile.getAbsolutePath());
    }

    try
    {
        FileWriter    outputWriter = new FileWriter(_outputFile);
        DataDtdWriter dtdWriter    = new DataDtdWriter();

        dtdWriter.writeDtd(model, outputWriter);
        outputWriter.close();
        _log.info("Written DTD to " + _outputFile.getAbsolutePath());
    }
    catch (Exception ex)
    {
        handleException(ex, "Failed to write to output file " + _outputFile.getAbsolutePath());
    }
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:29,代码来源:WriteDtdToFileCommand.java


示例17: testColumnNameLongAndValueInvalidAndShort

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests the reader & writer behavior when a column name is a valid tag and longer,
 * than 255 characters, and the value is invalid and shorter than 255 characters.
 */
public void testColumnNameLongAndValueInvalidAndShort() throws Exception
{
    String columnName = StringUtils.repeat("value", 100);
    Database model = readModel(
        "<?xml version='1.0' encoding='UTF-8'?>\n"+
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='test'>\n" +
        "  <table name='test'>\n"+
        "    <column name='id' type='INTEGER' primaryKey='true' required='true'/>\n"+
        "    <column name='" + columnName + "' type='VARCHAR' size='50' required='true'/>\n"+
        "  </table>\n"+
        "</database>");
    String testedValue = "the\u0000value";

    SqlDynaBean bean = (SqlDynaBean)model.createDynaBeanFor(model.getTable(0));

    bean.set("id", new Integer(1));
    bean.set(columnName, testedValue);

    roundtripTest(model, bean, "UTF-8",
                  "<?xml version='1.0' encoding='UTF-8'?>\n" +
                  "<data>\n" +
                  "  <test id=\"1\">\n" +
                  "    <column>\n" +
                  "      <column-name>" + columnName + "</column-name>\n" +
                  "      <column-value " + DatabaseIO.BASE64_ATTR_NAME + "=\"true\">" + new String(Base64.encodeBase64(testedValue.getBytes("UTF-8")), "UTF-8") + "</column-value>\n" +
                  "    </column>\n" +
                  "  </test>\n" +
                  "</data>\n");
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:34,代码来源:TestDataReaderAndWriter.java


示例18: checkForAddedIndexes

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Creates change objects for indexes that are not present in the given source table but are in the target
 * table, and applies them to the given intermediate model.
 * 
 * @param sourceModel       The source model
 * @param sourceTable       The source table
 * @param intermediateModel The intermediate model to apply the changes to
 * @param intermediateTable The table from the intermediate model corresponding to the source table
 * @param targetModel       The target model
 * @param targetTable       The target table
 * @return The changes
 */
protected List checkForAddedIndexes(Database sourceModel,
                                    Table    sourceTable,
                                    Database intermediateModel,
                                    Table    intermediateTable,
                                    Database targetModel,
                                    Table    targetTable)
{
    List changes = new ArrayList();

    for (int indexIdx = 0; indexIdx < targetTable.getIndexCount(); indexIdx++)
    {
        Index targetIndex       = targetTable.getIndex(indexIdx);
        Index intermediateIndex = findCorrespondingIndex(intermediateTable, targetIndex);
        Index sourceIndex       = findCorrespondingIndex(sourceTable, targetIndex);

        if ((sourceIndex == null) && (intermediateIndex == null))
        {
            if (_log.isInfoEnabled())
            {
                _log.info("Index " + targetIndex.getName() + " needs to be created for table " + intermediateTable.getQualifiedName());
            }

            Index          clonedIndex = _cloneHelper.clone(targetIndex, intermediateTable, _caseSensitive);
            AddIndexChange change      = new AddIndexChange(intermediateTable.getQualifiedName(), clonedIndex);

            changes.add(change);
            change.apply(intermediateModel, _caseSensitive);
        }
    }
    return changes;
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:44,代码来源:ModelComparator.java


示例19: createForeignKeys

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * 
 * {@inheritDoc}
 */
public void createForeignKeys(Database database) throws IOException
{
    for (int idx = 0; idx < database.getTableCount(); idx++)
    {
        createForeignKeys(database, database.getTable(idx));
    }
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:12,代码来源:FirebirdBuilder.java


示例20: testTwoTablesWithFK

import org.apache.ddlutils.model.Database; //导入依赖的package包/类
/**
 * Tests the removal of two tables with a foreign key between them. 
 */
public void testTwoTablesWithFK()
{
    final String modelXml = 
        "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
        "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='roundtriptest'>\n"+
        "  <table name='roundtrip1'>\n"+
        "    <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
        "    <column name='avalue' type='INTEGER'/>\n"+
        "  </table>\n"+
        "  <table name='roundtrip2'>\n"+
        "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
        "    <column name='avalue' type='VARCHAR' size='32'/>\n"+
        "    <foreign-key foreignTable='roundtrip1'>\n"+
        "      <reference local='avalue' foreign='pk'/>\n"+
        "    </foreign-key>\n"+
        "  </table>\n"+
        "</database>";

    createDatabase(modelXml);

    DatabaseToDdlTask task = getDatabaseToDdlTaskInstance();

    task.addDropTables(new DropTablesCommand());
    task.execute();

    assertEquals(new Database("roundtriptest"),
                 readModelFromDatabase("roundtriptest"),
                 false);
}
 
开发者ID:gemxd,项目名称:gemfirexd-oss,代码行数:33,代码来源:TestDropTablesCommand.java



注:本文中的org.apache.ddlutils.model.Database类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java AllowSnapshotOp类代码示例发布时间:2022-05-22
下一篇:
Java DataFlowNodeLifeCycleControl类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap