У меня есть команда SQL для добавления данных из коллекции в мою базу данных SQL. Кажется, все работает нормально, за исключением случаев, когда я пытаюсь передать нечисловые символы в мое поле Описание в таблице БД. Похоже, он не принимает строковые значения.
Класс My Collection
public class LotData
{
public string Lot;
public string Description { get; set; }
public int PO { get; set; }
public string MfgPart { get; set; }
}
Моя команда SQL
private const string strConn = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Matthew\\QCast.mdf;Integrated Security=True;Connect Timeout=30";
private void Button_Click_1(object sender, RoutedEventArgs e)
//send data from DataGrid to database
{
using (var conn = new SqlConnection(strConn))
{
conn.Open();
try
{
foreach (var lotData in lot)
{
using (var command = new SqlCommand("INSERT into LotData Values (@LOTnum, @WOnum, @POnum, @Description, @MFGpartNO)", conn))
{
command.Parameters.AddWithValue("LOTnum", lotData.Lot);
command.Parameters.AddWithValue("WOnum", "50-50-100");
command.Parameters.AddWithValue("POnum", lotData.PO);
command.Parameters.Add("Description",SqlDbType.Text , lotData.Description);
command.Parameters.AddWithValue("MFGpartNO", lotData.MfgPart);
command.ExecuteNonQuery();
}
}
}
finally
{
conn.Close();
}
}
У меня проблема с этой строкой -
command.Parameters.Add("Description",SqlDbType.Text , lotData.Description);
Ошибка, которую я получаю, «не может быть преобразована из stirng в int». Я не хочу int Я хочу строку
Я также попробовал:
command.Parameters.AddWithValue("Description",lotData.Description);
Затем я получаю исключение времени выполнения - тип операнда clash: int несовместим с текстом '
Моя настройка таблицы SQL такова:
CREATE TABLE [dbo].[LotData] (
[TransID] INT IDENTITY (1, 1) NOT NULL,
[WOnum] NCHAR (10) NULL,
[LOTnum] NVARCHAR (50) NULL,
[Description] TEXT NULL,
[POnum] INT NULL,
[MFGpartNO] NCHAR (10) NULL,
CONSTRAINT [PK_LotData] PRIMARY KEY CLUSTERED ([TransID] ASC)
Как мне решить эту проблему?