私のアプリがサーバーに接続し、それが実行されているどのPCでもデータベースを作成したい。私はコードを持っていますが、私のコンピュータ上でのみ動作し、他のコンピュータでは動作しません。他のコンピュータ上で実行すると、そのコンピュータのサーバに接続せずデータベースを作成しません。アプリケーションの実行時にサーバーに動的に接続してデータベースを作成
これは私のコードです。私は、アプリケーションが実行されるときに、データベースがそのPC上に存在するかどうか、また作成しないかどうかをチェックしたいと思う。私の問題が何であるかは、私のコードは、サーバー名をキャッチしていないということであると私は、私はSQLは
class Helper
{
public static SqlConnection ConnectionToDatabase()
{
string con = string.Format(@"Data Source=DESKTOP-RFJ38NM;Initial Catalog=MyDb;Integrated Security=True", Properties.Settings.Default.Server);
return new SqlConnection(con);
}
public static SqlConnection ConnectionToServer()
{
string con = string.Format(@"Data Source=DESKTOP-RFJ38NM;Integrated Security=True", Properties.Settings.Default.Server);
return new SqlConnection(con);
}
}
をコマンドを使用するたびに、私が使用していることも、ヘルパークラスを持っているメッセージ「不正なサーバー名」
public partial class Splash : Form
{
public Splash()
{
InitializeComponent();
Properties.Settings.Default.Server = "(local)";
timer.Enabled = true;
}
private void CheckDatabase()
{
try
{
using (SqlConnection conn = Helper.ConnectionToServer())
{
if (Properties.Settings.Default.Server != string.Empty)
{
using (SqlCommand cmd = new SqlCommand(
"IF EXISTS (SELECT name FROM sys.databases WHERE name = 'MyDb') SELECT 1 ELSE SELECT 0",
conn))
{
conn.Open();
int value = (int)cmd.ExecuteScalar();
conn.Close();
if (value != 1)
{
MessageBox.Show("Database doesn't exist");
timer.Enabled = false;
CreateDatabase();
}
}
}
else
{
timer.Enabled = true;
}
}
}
catch
{
MessageBox.Show("Bad server name");
}
}
private void CreateDatabase()
{
string serverStr = "CREATE DATABASE [MyDb]";
string databaseStr = @"
CREATE TABLE [dbo].[Worker] (
[FirstName] NVARCHAR (50) NOT NULL,
[Password] NVARCHAR (50) NOT NULL,
[LastName] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Password] ASC)
);
CREATE TABLE [dbo].[Article] (
[ItemName] NVARCHAR (50) NOT NULL,
[Barcode] NVARCHAR (50) NOT NULL,
[Price] MONEY NOT NULL,
CONSTRAINT [PK_Article] PRIMARY KEY CLUSTERED ([Barcode] ASC)
);";
using (SqlConnection conn = Helper.ConnectionToServer())
{
try
{
using (SqlCommand comm = new SqlCommand(serverStr, conn))
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
}
catch
{
MessageBox.Show("Bad server name");
}
}
using (SqlConnection conn = Helper.ConnectionToDatabase())
{
using (SqlCommand comm = new SqlCommand(databaseStr, conn))
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
timer.Enabled = true;
}
}
}
を示し
ほとんどのPCはサーバーではなく、MySQLを実行していません。 [ツアー]を読んでから[質問]、[mcve]の順にクリックして質問を編集して、何をしようとしているのか詳細を記入してください。たぶんSQLiteのようなライブラリが必要なだけかもしれませんが、十分に私たちに話しているわけではありません。 –
@DaveS OPにはMysqlは言及されていませんが、残りのコメントが適用されます。 –
問題は、サーバーの文字列を静的に定義していて、それが動作していないためです。 – Zorge