Re[2]: Несколько SQL команд одновременно - вопрос
От: p.s.  
Дата: 02.05.04 19:09
Оценка:
Здравствуйте, fist, Вы писали:

F>Здравствуйте, p.s.,

F>Ваш код полностью рабочий.
F>Ошибка скорее всего в другом месте.

Спасибо огромное!

Действительно, ошибка была в другом месте.. Теперь работает. На всякий случай, если у кого потом возникнет аналогичный вопрос, вот исходный код:

==== db.h ======
// db.h

#pragma once

#using <System.dll>
#using <System.Data.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Xml;
using namespace config;

namespace db
{
public __gc class BIDatabase
{

public:

int CreateMasterDB(void);
BIDatabase(BIConfig*);


private:

String* dbQuery;
String* dbConnection;
String* dbMasterName;

BIConfig* Config;
};

}

====/db.h ======

==== db.cpp =====
// This is the main DLL file.

#include "stdafx.h"
#include "db.h"

using namespace db;
using namespace System::Data::SqlClient;
using namespace System;

int BIDatabase::CreateMasterDB(void)
{
// creating SQL command for master database core tables
//
String* _tarr __gc[] = {

// create SETTINGS table
//
"CREATE TABLE SETTINGS (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"NAME_ID INTEGER NOT NULL ,",
"FUNCTION_ID INTEGER NOT NULL ,",
"CONTEXT_ID INTEGER NOT NULL ,",
"VALUE_ID INTEGER NOT NULL ,",
"TYPE_ID INTEGER NOT NULL",
");",

// create DATA_TYPES table
//
"CREATE TABLE DATA_TYPES (",
"TYPE_ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"TYPE VARCHAR( 32 ) NOT NULL ,",
"TABLE_NAME VARCHAR( 64 ) NOT NULL ",
");",

// create STRINGS table
//
"CREATE TABLE STRINGS (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE VARCHAR( 64 ) NOT NULL ",
");",

// create DATA_FLOAT table
//
"CREATE TABLE DATA_FLOAT (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE FLOAT NOT NULL ,",
"TS INTEGER NOT NULL ",
");",

// create DATA_INT table
//
"CREATE TABLE DATA_INT (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE INTEGER NOT NULL ,",
"TS INTEGER NOT NULL ",
");",

// create DATA_CHAR table
//
"CREATE TABLE DATA_CHAR (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE CHAR(1) NOT NULL ,",
"TS INTEGER NOT NULL ",
");",

// create DATA_STRING table
//
"CREATE TABLE DATA_STRING (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE VARCHAR(255) NOT NULL ,",
"TS INTEGER NOT NULL",
");",

// create DATA_TEXT table
//
"CREATE TABLE DATA_TEXT (",
"ID INTEGER NOT NULL IDENTITY(1,1) PRIMARY KEY,",
"VALUE TEXT NOT NULL ,",
"TS INTEGER NOT NULL ",
");"

};

String* _tins __gc[] = {

// Insert initial TYPE rows into the tables
//
"INSERT INTO DATA_TYPES (TYPE,TABLE_NAME) VALUES ('CHAR','DATA_CHAR');",
"INSERT INTO DATA_TYPES (TYPE,TABLE_NAME) VALUES ('FLOAT','DATA_FLOAT');",
"INSERT INTO DATA_TYPES (TYPE,TABLE_NAME) VALUES ('INT','DATA_INT');",
"INSERT INTO DATA_TYPES (TYPE,TABLE_NAME) VALUES ('STRING','DATA_STRING');",
"INSERT INTO DATA_TYPES (TYPE,TABLE_NAME) VALUES ('TEXT','DATA_TEXT');"

//

};

Char sep[] = {';'};

if (Config->DBType->CompareTo(Config->DB_TYPE_MSSQL)) {

String* myConnString =
String::Format("Persist Security Info=False;Integrated Security=SSPI;database=MASTER;data source={0}",Config->Host);

SqlConnection* myConnection = new SqlConnection(myConnString);

myConnection->Open();

try {
// creating BIS master database
//
SqlCommand* comm1 = new SqlCommand(String::Format("CREATE DATABASE {0}",dbMasterName), myConnection);
comm1->ExecuteReader();
} catch(System::Exception* pe) {
if (Config->Debug >= Config->DEBUG_CRITICAL)
Console::WriteLine(pe->ToString());
///return Config->SQL_ERROR_TABLE;
}

myConnection->Close();

// Connect to the new BIS master database
//
myConnString = String::Format("Persist Security Info=False;Integrated Security=SSPI;database={0};data source={1}",dbMasterName,Config->Host);
SqlConnection* conn = new SqlConnection(myConnString);

conn->Open();


String* _sqlCreateTables = new String("");
_sqlCreateTables = String::Join("",_tarr);

try {
SqlCommand* comm2 = new SqlCommand(_sqlCreateTables,conn);
comm2->ExecuteNonQuery();
} catch(System::Exception* pe) {
if (Config->Debug >= Config->DEBUG_CRITICAL) {
Console::WriteLine(pe->ToString());
}

}

conn->Close();



}

return 0;
}

BIDatabase::BIDatabase(BIConfig* cfg)
{
Config = cfg;
dbMasterName = Config->MasterDB;
}
====/db.cpp =====
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.