Как получить бд c forms
Перейти к содержимому

Как получить бд c forms

  • автор:

как сделать установщик windows form приложения на C# к которому подключена SSMS база данных?

Создана база данных в SSMS на локальном компьютере, также создано WindowsForm приложение на C#, которое выводит данные из таблиц БД. Сделал установочный файл приложения, на моем ПК устанавливается и работает как и задумано, а на ПК друга после установки запускаю приложение и не могу авторизоваться (в бд создана таблица с зарегистрированными пользователями). Понятно что приложение просто не может подключиться к базе данных, но как это решить? Подключение к базе данных прописано в отдельном классе. Код класса прилагается.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace test_DataBase < internal class DataBase < SqlConnection sqlConnection = new SqlConnection(@"Data Source=DESKTOP-GE5UCRH\SQLEXPRESS; Initial Catalog=test; Integrated Security=True"); public void openConnection() < if (sqlConnection.State == System.Data.ConnectionState.Closed) < sqlConnection.Open(); >> public void closeConnection() < if (sqlConnection.State == System.Data.ConnectionState.Open) < sqlConnection.Close(); >> public SqlConnection getConnection() < return sqlConnection; >> > 

Отслеживать
49.1k 5 5 золотых знаков 25 25 серебряных знаков 58 58 бронзовых знаков
задан 22 мар 2023 в 5:48
33 1 1 серебряный знак 5 5 бронзовых знаков
Установщик создавался при помощи Microsoft Visual Studio Installer Projects 2022
22 мар 2023 в 5:50
Пк — друга подключен к вашей сети, так?
22 мар 2023 в 6:47
На одном Wi-Fi.
22 мар 2023 в 7:06
А пк на котором БД доступ для других пользователей разрешен?
22 мар 2023 в 7:10
Нет, доступа нету
22 мар 2023 в 7:17

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

«в бд создана таблица с зарегистрированными пользователями»

У вас авторизация в БД на базе учетки Windows. Как вы прописали пользователей? У вас домен или рабочая группа?

Просто есть подозрение, что у вас рабочая группа, а вы создали просто табличку с пользователями и в ручную проверяете авторизацию, уже после подключения. Определитесь и настроите доступ для подключения к БД сначала.

Далее вы столкнётесь с тем, что скорее всего не настроили прослушивание tcp/ip у sql server. И не открыли порт в фаерволе.

Как получить бд c forms

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Чтобы хранить данные, нам естественным образом нужна база данных. Как правило, в качестве базы данных используется MS SQL Server, на примере которого мы и посмотрим весь процесс создания БД и подключения к ней.

Мы можем создать базу данных прямо в проекте, либо же создать ее на сервере MS SQL. Для хранения баз данных проекте у нас предназначена папка App_Data. Для этого нажмем правой кнопкой мыши на папку App_Data и в появившемся контекстном меню выберем Add-> New Item. . В появившемся окне добавления нового элемента выберем SQL Server Database и назовем новую базу данных Bookstore.mdf:

Мы можем создать базу данных равнозначным образом и на сервере. После этого база данных добавляется в проект, и мы можем увидеть ее в папке App_Data. Теперь в обозревателе баз данных (окно Database Explorer ) мы можем подключиться к ней и создать таблицы, которые будут хранить данные.

Раскроем узел Bookstore.mdf и найдем узел Tables. Нажмем на этот узел правой кнопкой мыши и в появившемся меню выберем пункт Add New Table . И перед нами появится окно, в котором нам надо определить названия и типы столбцов новой таблицы. По соглашениям о наименованиях таблицы при работе с Entity Framework должны соответствовать имени модели. То есть, так как наша модель называется Book , то таблица будет называться Books . А Entity Framework автоматически распознает, что таблица Books соответствует классу Book .

Итак, создадим структуру таблицы:

Не забудьте установить ниже в окне Properties (в Visual Stidio 2010 — окно Column Properties) для столбца Id соответствующие параметры для первичного ключа:

После этого, если мы работаем с Visual Studio 2010, нам будет предложено просто ввести имя таблицы — введем имя Books, и затем таблица добавляется в БД.

А в Visual Studio Express 2012 for Web нам надо сгенерировать таблицу на основе заданного выше определения. Для этого нажмем на кнопку Update:

В появившемся диалоговом окне нажмем на кнопку Update Database. После этого в нашу базу данных добавляется только что сгенерированная таблица. Подобным образом определим таблицу Purchases для модели Purchase:

Добавим в таблицу Books несколько записей:

Теперь, во-первых, чтобы взаимодействовать с БД, нам нужен класс контекста данных, пусть это будет следующий класс BookContext:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; namespace BookStore.Models < public class BookContext : DbContext < public DbSetBooks < get; set; >public DbSet Purchases < get; set; >> >

Во-вторых, определим строку подключения к БД. Для этого откроем файл Web.config и добавим в конец секции configuration определение строки подключения. Однако тут надо сразу заметить, что для Visual Studio 2010 строка подключения будет отличаться от строки подключения, которая используется в Visual Studio 2012.

Итак, строка подключения для Visual Studio 2010 будет выглядеть так:

Для Visual Studio 2012 будет выглядеть определение строки подключения будет выглядеть следующим образом:

В Visual Studio 2012 в отличие от 2010-й версии мы можем использовать режим LocalDB, который предназначен прежде всего для разработчиков, представляя некоторую упрощенную версию. Поэтому в данном случае в качестве источника данных используется (LocalDB)\v11.0.

Обратите внимание, что в обоих случаях свойство name=»BookContext» должно содержать название контекста данных.

Использование подстановки |DataDirectory| позволяет опустить полный физический путь к базе данных, которая хранится в папке App_Data.

Теперь мы можем получить содержимое таблицы Books в контроллере Home:

public class HomeController : Controller < BookContext db = new BookContext(); public ActionResult Index() < return View(db.Books); >>

И вывести данные в представлении Index.cshtml:

@model IEnumerable @ < Layout = "~/Views/Shared/_Layout.cshtml"; > 

Распродажа книг

@foreach (BookStore.Models.Book b in Model) < >

Название книги

Автор

Цена

@b.Name

@b.Author

@b.Price

Купить

Закрытие подключения

Чтобы наверняка быть уверенным, что подключение к базе данных закрыто, следует вызывать метод Dispose у контекста данных:

protected override void Dispose(bool disposing)

Это переопределенная версия метода Dispose контроллера, которая вызывается при уничтожении объекта контроллера. В нее помещается вызов db.Dispose() , который уничтожает все связанные с контекстом данных ресурсы и подключения.

Как получить бд c forms

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

Ранее мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.

Итак, определим форму, на которой будет элемент DataGridView и три кнопки для добавления, удаления и сохранения изменений. Форма в итоге будет выглядеть примерно следующим образом:

DataSet и DataGridView

Код формы будет выглядеть следующим образом:

using System; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; namespace AdoNetWinFormsApp < public partial class Form1 : Form < DataSet ds; SqlDataAdapter adapter; SqlCommandBuilder commandBuilder; string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; string sql = "SELECT * FROM Users"; public Form1() < InitializeComponent(); dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AllowUserToAddRows = false; using (SqlConnection connection = new SqlConnection(connectionString)) < connection.Open(); adapter = new SqlDataAdapter(sql, connection); ds = new DataSet(); adapter.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; // делаем недоступным столбец id для изменения dataGridView1.Columns["Id"].ReadOnly = true; >> // кнопка добавления private void addButton_Click(object sender, EventArgs e) < DataRow row = ds.Tables[0].NewRow(); // добавляем новую строку в DataTable ds.Tables[0].Rows.Add(row); >// кнопка удаления private void deleteButton_Click(object sender, EventArgs e) < // удаляем выделенные строки из dataGridView1 foreach(DataGridViewRow row in dataGridView1.SelectedRows) < dataGridView1.Rows.Remove(row); >> // кнопка сохранения private void saveButton_Click(object sender, EventArgs e) < using (SqlConnection connection = new SqlConnection(connectionString)) < connection.Open(); adapter = new SqlDataAdapter(sql, connection); commandBuilder = new SqlCommandBuilder(adapter); adapter.InsertCommand = new SqlCommand("sp_CreateUser", connection); adapter.InsertCommand.CommandType = CommandType.StoredProcedure; adapter.InsertCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 50, "Name")); adapter.InsertCommand.Parameters.Add(new SqlParameter("@age", SqlDbType.Int, 0, "Age")); SqlParameter parameter = adapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Int, 0, "Id"); parameter.Direction = ParameterDirection.Output; adapter.Update(ds); >> > >

Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которая была добавлена в базу данных в прошлой теме.

В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:

dataGridView1.DataSource = ds.Tables[0];

Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AllowUserToAddRows = false;

В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:

private void addButton_Click(object sender, EventArgs e) < DataRow row = ds.Tables[0].NewRow(); // добавляем новую строку в DataTable ds.Tables[0].Rows.Add(row); >

В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:

private void deleteButton_Click(object sender, EventArgs e) < foreach(DataGridViewRow row in dataGridView1.SelectedRows) < dataGridView1.Rows.Remove(row); >>

Для обновления на не нужна никакая кнопка, так как мы можем нажать на любую ячейку таблицы (кроме заблокированного для изменения столбца Id) и изменить в ней данные. Однако сами по себе добавление новой строки, удаление строк, изменение ячеек ни как автоматически не отразятся на базе данных. И чтобы бд синхронизировалась, пользователю надо будет нажать на кнопку сохранения, обработчик которой выглядит следующим образом:

private void saveButton_Click(object sender, EventArgs e) < using (SqlConnection connection = new SqlConnection(connectionString)) < connection.Open(); adapter = new SqlDataAdapter(sql, connection); commandBuilder = new SqlCommandBuilder(adapter); adapter.InsertCommand = new SqlCommand("sp_CreateUser", connection); adapter.InsertCommand.CommandType = CommandType.StoredProcedure; adapter.InsertCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 50, "Name")); adapter.InsertCommand.Parameters.Add(new SqlParameter("@age", SqlDbType.Int, 0, "Age")); SqlParameter parameter = adapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Int, 0, "Id"); parameter.Direction = ParameterDirection.Output; adapter.Update(ds); >>

Как в прошлой теме здесь устанавливается у адаптера команда на добавление InsertCommand и затем вызывается метод Update() . В итоге мы можем добавить несколько строк, удалить, изменить, и потом один раз мы нажмем на кнопку, и все изменения будут применены к базе данных.

Создание базы данных и добавление таблиц в приложениях платформа .NET Framework с помощью Visual Studio

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

Visual Studio можно использовать для создания и обновления локального файла базы данных в SQL Server Express LocalDB. Вы также можете создать базу данных, выполнив инструкции Transact-SQL в окне инструментов SQL Server обозреватель объектов в Visual Studio. В этом разделе описано, как создать .mdf файл и добавить таблицы и ключи с помощью конструктора таблиц.

Необходимые компоненты

Чтобы выполнить это пошаговое руководство, вам потребуется разработка классических приложений .NET и хранение и обработка рабочих нагрузок, установленных в Visual Studio. Чтобы установить их, откройте Visual Studio Installer и нажмите кнопку «Изменить» (или «Изменить >«) рядом с версией Visual Studio, которую вы хотите изменить. См. раздел Изменение Visual Studio.

Процедуры, описанные в этой статье, применяются только к платформа .NET Framework проектам Windows Forms, а не к проектам Windows Forms .NET Core.

Создание проекта и файла локальной базы данных

  1. Создайте проект приложения Windows Forms (платформа .NET Framework) и назовите его SampleDatabaseWalkthrough.
  2. В строке меню выберите «Добавить новый элемент проекта>«. Если появится небольшое диалоговое окно с полем для имени файла, выберите «Показать все шаблоны«.
  3. В списке шаблонов элементов прокрутите вниз и выберите базу данных на основе служб.

Add New item ></p>
<p>Service-based database» /></p>
<p><img decoding=

Добавление источника данных

  1. Если окно «Источники данных» не открыто, откройте его, нажав клавиши SHIFT+ALT+D или выбрав «Просмотреть>другие источники данных Windows>» в строке меню.
  2. В окне «Источники данных» выберите «Добавить новый источник данных».

Add new data source in Visual Studio

Add new data source in Visual Studio

Просмотр свойств подключения к данным

Чтобы просмотреть некоторые свойства файла SampleDatabase.mdf , откройте окно «Свойства » подключения к данным:

  • Чтобы открыть окно обозреватель объектов SQL Server, выберите View>SQL Server обозреватель объектов (или CTRL\+, CTRL +S), чтобы открыть окно SQL Server обозреватель объектов. Разверните (localdb)\MSSQLLocalDB>Database, а затем щелкните правой кнопкой мыши SampleDatabase.mdf (он может быть указан как полный путь) и выберите «Свойства».
  • Кроме того, можно выбрать Обозреватель представления>сервера, если это окно еще не открыто. Откройте окно свойств, разверните узел «Данные Подключение ions«, щелкните правой кнопкой мыши SampleDatabase.mdf и выберите пункт «Свойства«.

Совет Если вы не можете развернуть узел «Данные Подключение ions» или подключение SampleDatabase.mdf не указано, нажмите кнопку Подключение в базу данных на панели инструментов сервера Обозреватель. В диалоговом окне «Добавление Подключение» убедитесь, что в источнике данных выбран файл базы данных Microsoft SQL Server, а затем перейдите к файлу SampleDatabase.mdf. Завершите добавление подключения, нажав кнопку «ОК«.

Чтобы просмотреть строка подключения, можно открыть файл app.config в Обозреватель решений. В элементе должна появиться запись connectionStrings , похожая на следующий код:

Создание таблиц и ключей с помощью конструктора таблиц

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

Создание таблицы Customers

  1. В обозревателе объектов сервера Обозреватель или SQL Server разверните узел «Данные Подключение ions«, а затем развернитеузел SampleDatabase.mdf.
  2. Щелкните правой кнопкой мыши таблицы и выберите «Добавить новую таблицу«. Будет открыт Конструктор таблиц, отобразится сетка с одной строкой по умолчанию, которая представляет один столбец в создаваемой таблице. Добавляя строки в сетку, вы добавляете столбцы в таблицу.
  3. В сетке добавьте строку для каждой из следующих записей.
Имя столбца Тип данных Разрешить значения null
CustomerID nchar(5) False (не установлен)
CompanyName nvarchar(50) False (не установлен)
ContactName nvarchar (50) True (установлен)
Phone nvarchar (24) True (установлен)
CREATE TABLE [dbo].[Customers] 
CONSTRAINT [PK_Customers] PRIMARY KEY ([CustomerID]) 

Отобразятся примерно следующие сведения:

Table Designer with Customers table

Table Designer with Customers table

Создание таблицы «Заказы»

  1. Создайте еще одну таблицу, а затем добавьте строку для каждой записи следующей таблицы.
Имя столбца Тип данных Разрешить значения null
OrderID int False (не установлен)
CustomerID nchar(5) False (не установлен)
OrderDate datetime True (установлен)
OrderQuantity int True (установлен)
CREATE TABLE [dbo].[Orders] 
CONSTRAINT [PK_Orders] PRIMARY KEY ([OrderId]) 

Tables node expanded in Server Explorer

Tables node expanded in Server Explorer

Создание внешнего ключа

  1. В области контекста справа от сетки конструктора таблиц для таблицы «Заказы» щелкните правой кнопкой мыши внешние ключи и выберите «Добавить новый внешний ключ«.

Add a foreign key in Table Designer in Visual Studio

Add a foreign key in Table Designer in Visual Studio

CONSTRAINT [FK_Orders_Customers] FOREIGN KEY ([CustomerID]) REFERENCES [Customers]([CustomerID]) 

Заполнение таблиц данными

  1. В обозреватель объектов Server Обозреватель или SQL Server разверните узел для примера базы данных.
  2. Откройте контекстное меню узла «Таблицы», выберите «Обновить» и разверните узел «Таблицы«.
  3. Откройте контекстное меню таблицы «Клиенты», а затем выберите «Показать данные таблицы» или «Просмотреть данные«.
  4. Добавьте все нужные данные для некоторых клиентов. Можно указать любые пять символов как ИД клиентов, но хотя бы один нужно выбрать и запомнить для дальнейшего использования в этой процедуре.
  5. Откройте контекстное меню таблицы «Заказы», а затем выберите «Показать данные таблицы» или «Просмотреть данные«.
  6. Добавьте данные для некоторых заказов. При вводе каждой строки она сохраняется в базе данных.

Важно! Убедитесь, что все идентификаторы заказов и количества заказов — целые числа, и каждый идентификатор клиента соответствует значению, указанному в столбце CustomerID таблицы клиентов.

Поздравляем! Теперь вы знаете, как создавать таблицы, связывать их с внешним ключом и добавлять данные.

Связанный контент

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *