Muhammad nur Ihsan Ответов: 2

Как я могу создать c# visualstud установки включают сервер на другом устройстве


во-первых, извините за мой английский и новый, мне очень нужна помощь..
что я использовал Visual Studio 2017 , C# , Microsoft SQL Management Studio

myproblem:
я создал установочные файлы и попробовал программу на другом устройстве
и это случилось

он нормально работает на моем компьютере, где я создаю проект с помощью

и когда
я установил программу в своем ноутбуке, я нажимаю кнопку входа/регистрации, она выскакивает окно ошибки

-
Необработанное исключение произошло в вашем приложении. если вы нажмете кнопку Продолжить, приложение немедленно закроется.

При установке соединения с SQL server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или недоступенУбедитесь, что имя экземпляра указано правильно Ошибка: 26 - ошибка определения местоположения указанного сервера/экземпляра.

-

в мой проект установки первичного выхода ЦАХАЛа и усилителя;amp; MDF-файлов и некоторые из библиотек DLL..
так как именно создать c#visualstudio установки SQL-сервера?
до запуска в другом устройстве кнопка входа в систему работает.. спасибо

Что я уже пробовал:

Форма 1
кнопка входа в систему
private void btnLogin_Click(object sender, EventArgs e)
       {
           List<SqlParameter> sqlParams = new List<SqlParameter>();
           sqlParams.Add(new SqlParameter("Username", TxtUsername.Text));
           sqlParams.Add(new SqlParameter("Password", txtPassword.Text));

           DataTable dtLoginResults = DAL.ExecSP("ValidateLogin", sqlParams);

           if (dtLoginResults.Rows.Count == 1)
           {
               //We know login is valid
               string user = dtLoginResults.Rows[0]["Username"].ToString();
               MessageBox.Show(user + " Berhasil Masuk!");
               this.Hide();
               ListMeja lm = new ListMeja();
               lm.ShowDialog();
           }
           else
           {
               //invalid login
               MessageBox.Show("Password Salah");
           }
       }


Форма 2
Кнопку "Регистрация"
private void button1_Click(object sender, EventArgs e)
        {
            List<SqlParameter> sqlParams = new List<SqlParameter>();
            sqlParams.Add(new SqlParameter("Username", txtusername.Text));
            sqlParams.Add(new SqlParameter("Password", txtpassword.Text));

            DAL.ExecSP("CreateUser", sqlParams);

            MessageBox.Show("User Berhasil Dibuat!"); 
        }


Даль.в CS
public static class DAL
    {
        public static DataTable ExecSP(string spName, List<SqlParameter> sqlParams = null)
        {
            string strConnect = "Server=PC\\SQLEXPRESS;Database=MyLoginApp;Trusted_Connection=True;";     
            SqlConnection conn = new SqlConnection();
            DataTable dt = new DataTable();

            try
            {
                //Connect to the database
                conn = new SqlConnection(strConnect);
                conn.Open();

                //Build an sql command / query
                SqlCommand cmd = new SqlCommand(spName, conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddRange(sqlParams.ToArray());

                //Execute command
                SqlCommand command = conn.CreateCommand();
                SqlDataReader dr = cmd.ExecuteReader();

                //fill datatable with the results
                dt.Load(dr);


            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //No matter what happends this will run
                conn.Close();
            }
            return dt;
        }
    }

2 Ответов

Рейтинг:
10

Muhammad nur Ihsan

i need still to have the sql server(sqlexpress) turned on or the db wont work 
Error: 26 - Error Locating Server/Instance Specified

what i've did so far 
i did deploy the database and here's the
script.sql i also put the .sql in Setup Project also the .idf&.mdf files
<pre>
USE [master]
GO
/****** Object:  Database [MyLoginApp]    Script Date: 8/22/2018 11:01:57 AM ******/
CREATE DATABASE [MyLoginApp]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'MyLoginApp', FILENAME = N'E:\TOOL\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\MyLoginApp.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'MyLoginApp_log', FILENAME = N'E:\TOOL\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\MyLoginApp_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [MyLoginApp] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [MyLoginApp].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [MyLoginApp] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [MyLoginApp] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [MyLoginApp] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [MyLoginApp] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [MyLoginApp] SET ARITHABORT OFF 
GO
ALTER DATABASE [MyLoginApp] SET AUTO_CLOSE ON 
GO
ALTER DATABASE [MyLoginApp] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [MyLoginApp] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [MyLoginApp] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [MyLoginApp] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [MyLoginApp] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [MyLoginApp] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [MyLoginApp] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [MyLoginApp] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [MyLoginApp] SET  DISABLE_BROKER 
GO
ALTER DATABASE [MyLoginApp] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [MyLoginApp] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [MyLoginApp] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [MyLoginApp] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [MyLoginApp] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [MyLoginApp] SET READ_COMMITTED_SNAPSHOT OFF 
GO
ALTER DATABASE [MyLoginApp] SET HONOR_BROKER_PRIORITY OFF 
GO
ALTER DATABASE [MyLoginApp] SET RECOVERY FULL 
GO
ALTER DATABASE [MyLoginApp] SET  MULTI_USER 
GO
ALTER DATABASE [MyLoginApp] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [MyLoginApp] SET DB_CHAINING OFF 
GO
ALTER DATABASE [MyLoginApp] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
GO
ALTER DATABASE [MyLoginApp] SET TARGET_RECOVERY_TIME = 0 SECONDS 
GO
ALTER DATABASE [MyLoginApp] SET DELAYED_DURABILITY = DISABLED 
GO
USE [MyLoginApp]
GO
/****** Object:  Table [dbo].[Users]    Script Date: 8/22/2018 11:01:57 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Username] [nvarchar](32) NOT NULL,
	[Password] [nvarchar](64) NOT NULL,
 CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  StoredProcedure [dbo].[CreateUser]    Script Date: 8/22/2018 11:01:57 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Ihsan
-- Create date: 
-- Description:	
-- =============================================
CREATE PROCEDURE [dbo].[CreateUser] 
	-- Add the parameters for the stored procedure here
	@Username nvarchar(32),
	@Password nvarchar(64)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	INSERT INTO Users (Username, Password) VALUES (@Username, @Password);
END
GO
/****** Object:  StoredProcedure [dbo].[ValidateLogin]    Script Date: 8/22/2018 11:01:57 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Ihsan
-- Create date: 
-- Description:	
-- =============================================
CREATE PROCEDURE [dbo].[ValidateLogin] 
	-- Add the parameters for the stored procedure here
	@Username nvarchar(32),
	@Password nvarchar(64)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT * FROM Users WHERE Username = @Username AND Password = @Password;
END
GO
USE [master]
GO
ALTER DATABASE [MyLoginApp] SET  READ_WRITE 
GO



и в моей регистрационной форме я добавил Это
чтобы проверить, существует ли база данных или нет
если нет, то верните значение bool

private bool CheckDatabaseExist()
        {
            //Sql Connection for User Defined Database
            SqlConnection Connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Collage;Integrated Security=True");
            try
            {
                Connection.Open();
                return true;
            }
            catch
            {
                return false;
            }
        }

        private void GenerateDatabase()
        {
            List<string> cmds = new List<string>();
            //reading our script file from the installed application folder
            if (File.Exists(Application.StartupPath + "\\script.sql"))
            {
                TextReader tr = new StreamReader(Application.StartupPath + "\\script.sql");
                string line = "";
                string cmd = "";
                while ((line = tr.ReadLine()) != null)
                {
                    if (line.Trim().ToUpper() == "GO")
                    {
                        cmds.Add(cmd);
                        cmd = "";
                    }
                    else
                    {
                        cmd += line + "\r \n";
                    }
                }
                if (cmd.Length > 0)
                {
                    cmds.Add(cmd);
                    cmd = "";
                }
                tr.Close();
            }
            if (cmds.Count > 0)
            {
                SqlCommand command = new SqlCommand();
                //SqlConnection for master database
                //This sql connection for master database it is used to generate database 
                command.Connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=MASTER;Integrated Security=True");
                command.CommandType = System.Data.CommandType.Text;
                command.Connection.Open();
                for (int i = 0; i < cmds.Count; i++)
                {
                    command.CommandText = cmds[i];
                    command.ExecuteNonQuery();
                }
            }
        }

        private void Login_Load(object sender, EventArgs e)
        {
            //Checking whether database exist or not it returns bool value if not then it generate the database
            if (!CheckDatabaseExist())
            {
                GenerateDatabase();
            }
}


Рейтинг:
1

MadMyche

Вам нужно будет создать этот экземпляр SQL Express на машинах, на которых он развернут; или вы можете изменить строку подключения, чтобы подключиться к экземпляру, доступному по сети


Muhammad nur Ihsan

вы можете сказать мне, как это сделать? чтобы моя программа работала на моем 2-м устройстве, нужно ли мне устанавливать сервер (sqlexpress) вручную?

MadMyche

"Как" зависит от выбранного метода; так вы собираетесь запустить общую базу данных или вы собираетесь развернуть базу данных на клиенте?

Muhammad nur Ihsan

я хотел развернуть базу данных на клиенте , я думаю.., еще одна моя проблема каждый раз, когда я добавляю prereqissites и выбираю загрузку из того же места, что и мое приложение, я не могу установить приложение и почему в моих prerequistes нет опции установщика Windows