faizy001 Ответов: 1

Вставьте значения в таблицу SQL server и нажмите на пустые записи


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

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

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=DelhiEMP;Integrated Security=True");
           con.Open();
           string query = "insert into itemmaster(itemcode, name, salesprice, salestax,profit, quantityonhand) values(@itemcode, @name, @salesprice,@profit,@salestax,  @quantityonhand)";
           SqlCommand cmd = new SqlCommand(query, con);


           cmd.Parameters.AddWithValue("@itemcode", textBox1.Text);
           cmd.Parameters.AddWithValue("@name", textBox2.Text);
           cmd.Parameters.AddWithValue("@salesprice", textBox3.Text);
           cmd.Parameters.AddWithValue("@salestax", textBox4.Text);
           cmd.Parameters.AddWithValue("@profit", textBox5.Text);
           cmd.Parameters.AddWithValue("@quantityonhand", textBox6.Text);
           cmd.ExecuteNonQuery();
           MessageBox.Show("Saved");
           con.Close();

Nirav Prabtani

Что же это за ошибка ? Вы можете, пожалуйста, поделиться ?

1 Ответов

Рейтинг:
0

Tejas Vaishnav

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

здесь вы используете itemmaster таблица, так что если ее schmea допускает нулевое значение/ значение по умолчанию для столбцов itemcode, name, salesprice, salestax,profit, quantityonhand затем вы можете вставить запись значения по умолчанию/нулевого значения в свою таблицу.

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


ОБНОВЛЕНИЯ

Поскольку вы поделились своей схемой таблицы базы данных в соответствии с приведенным ниже сценарием

CREATE TABLE [dbo].[itemmaster](
[itemcode] [int] NOT NULL,
[name] [varchar](50) NULL,
[salesprice] [decimal](18, 0) NULL,
[salestax] [decimal](18, 0) NULL,
[profit] [decimal](18, 0) NULL,
[quantityonhand] [decimal](18, 0) NULL,
PRIMARY KEY CLUSTERED 
(
[itemcode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


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

Или в соответствии с приведенным ниже сценарием вы можете изменить схему таблицы и определить itemcode в качестве столбца идентификатора с первичным ключом база данных автоматически увеличит следующее значение идентификатора и вставит его в вашу таблицу при вставке записей.

/****** Object:  Table [dbo].[itemmaster]    Script Date: 5/1/2017 8:08:10 PM ******/
DROP TABLE [dbo].[itemmaster]
GO

/****** Object:  Table [dbo].[itemmaster]    Script Date: 5/1/2017 8:08:10 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[itemmaster](
	[itemcode] [int] IDENTITY(1,1) NOT NULL,
	[name] [varchar](50) NULL,
	[salesprice] [decimal](18, 0) NULL,
	[salestax] [decimal](18, 0) NULL,
	[profit] [decimal](18, 0) NULL,
	[quantityonhand] [decimal](18, 0) NULL,
 CONSTRAINT [PK__itemmast__986EE407B02D1FB9] PRIMARY KEY CLUSTERED 
(
	[itemcode] 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

SET ANSI_PADDING OFF
GO



Внушение: пожалуйста, не используйте встроенный запрос в вашем приложении, это позволит SQL-инъекция[^] быть введенным в ваше приложение.
Вместо использования встроенного запроса используйте процедуру хранения с помощью в вашем приложении вот так Демонстрация Процедуры Хранения[^]


faizy001

Создайте таблицу [dbo].[itemmaster](
[itemcode] [int] NOT NULL,
[имя] [varchar] (50) NULL,
[salesprice] [decimal](18, 0) NULL,
[salestax] [decimal](18, 0) NULL,
[прибыль] [десятичная дробь](18, 0) NULL,
[quantityonhand] [decimal](18, 0) NULL,
ПЕРВИЧНЫЙ КЛЮЧ КЛАСТЕРНЫЙ
(
[артикул] АСК
)С (КАК = ВЫКЛ, STATISTICS_NORECOMPUTE = OFF, ТО ЗНАЧЕНИЕ IGNORE_DUP_KEY = OFF, ТО ПАРАМЕТРЫ ALLOW_ROW_LOCKS = ON, ТО ALLOW_PAGE_LOCKS ИНСТРУКЦИИ =) НА [ОСНОВНОЙ]
) НА [ПЕРВИЧНОМ]

faizy001

я посылаю свою структуру таблицы. пожалуйста, проверьте

Tejas Vaishnav

не могли бы вы проверить мой ответ, я обновил его соответствующим образом, и не забудьте принять его, если он решит вашу проблему

CHill60

По крайней мере, ОП использовал параметризованный запрос, чтобы предотвратить внедрение SQL