Здравствуйте, есть локальная база данных, созданная в MVS. В нее нужно поместить вещественное значение. Пробовал в БД делать тип данных float, decimal, numeric, без .Replace(",", ".") для значения поля не хочет записывать их в БД. А с .Replace(",", ".") округляет число (или отсекает всё что после "," , видимо). Пробовал Параметризованные запросы, не выходит (может не правильно пробовал).
Если убираем Replace, то com.ExecuteNonQuery(); выдает следующую ошибку:
Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll
Дополнительные сведения: Error converting data type nvarchar to float.
Сведения исключенияSystem.Data.SqlClient.SqlException не обработано
Class=16
ErrorCode=-2146232060
HResult=-2146232060
LineNumber=1
Message=Error converting data type nvarchar to float.
Number=8114
Procedure=""
Server=(LocalDB)\MSSQLLocalDB
Source=.Net SqlClient Data Provider
State=5
StackTrace:
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
в System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
в System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
в Kurs_Mahlai.stoimost_FORM.addCena_B_Click(Object sender, EventArgs e) в C:\Users\Владислав\documents\visual studio 2015\Projects\Kurs_Mahlai\Kurs_Mahlai\Form6.cs:строка 70
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.RunDialog(Form form)
в System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
в System.Windows.Forms.Form.ShowDialog()
в Kurs_Mahlai.Menu_FORM.ceni_B_Click(Object sender, EventArgs e) в C:\Users\Владислав\documents\visual studio 2015\Projects\Kurs_Mahlai\Kurs_Mahlai\Form1.cs:строка 47
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(Form mainForm)
в Kurs_Mahlai.Program.Main() в C:\Users\Владислав\documents\visual studio 2015\Projects\Kurs_Mahlai\Kurs_Mahlai\Program.cs:строка 19
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:
T-SQL таблицы в БД
CREATE TABLE [dbo].[t_stoimost] (
[ID_stoimost] INT IDENTITY (1, 1) NOT NULL,
[mintonn] FLOAT NOT NULL,
[maxtonn] FLOAT NOT NULL,
[tonn] NVARCHAR (50) NOT NULL,
[cenakm] FLOAT NOT NULL,
PRIMARY KEY CLUSTERED ([ID_stoimost] ASC)
);
Собрал код частями
SqlConnection con;
SqlCommand com;
public void Connection()
{
string connect = @"Data Source=(LocalDB)\MSSQLLocalDB;
AttachDbFilename=|DataDirectory|\Database01.mdf;
Integrated Security=True";
con = new SqlConnection(connect);
con.Open();
}
Connection();
com = con.CreateCommand();
string tonn = addMin_TB.Text + " - " + addMax_TB.Text;
com.CommandText = "INSERT INTO dbo.t_stoimost (mintonn, maxtonn, tonn, cenakm) VALUES (N'" + addMin_TB.Text.ToString(CultureInfo.InvariantCulture).Replace(",", ".") + "',N'" + addMax_TB.Text.ToString(CultureInfo.InvariantCulture).Replace(",", ".") + "',N'" + tonn + "',N'" + addCena_TB.Text.ToString(CultureInfo.InvariantCulture).Replace(",", ".") + "')";
com.ExecuteNonQuery();
con.Close();
t_stoimostTableAdapter.Fill(database01DataSet.t_stoimost);
t_stoimostDataGridView.Update();