PDA

View Full Version : مبتدی: اشکال در Insert در دیتابیس SQL Server



__MAHNAZ__
چهارشنبه 16 دی 1394, 11:00 صبح
با سلام من تازه برنامه نویسی C#‎‎‎‎‎‎‎‎رو شروع کردم و هین ابتدا به مشکلی در قسمت ثبت اطلاعات برخوردم که برام قابل حل نیست.
تو تعریف دیتا بیس از سه نوع فیل nvarchar , int, float استفاده کردم و کد ثبت اطلاعاتم به صورت زیر هستش. ولی با زدن دکمه ثبت این Error رو میده:
When converting String To DateTime , parse the string to take date before putting each variable into the datetime object.
این در صورتی هستش که هیچ جای برنامه نوع string رو تبدیل به DateTimeنکردم.
کد کلید ثبت:

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "InsertLine";
cmd.Parameters.Add("@Send" , SqlDbType.NVarChar, 50).Value = SecomboBox.Text;
cmd.Parameters.Add("@Recevi", SqlDbType.NVarChar, 50).Value = RecomboBox.Text;
cmd.Parameters.Add("@Type" , SqlDbType.Int) .Value = int.Parse(TypecomboBox.Text);
cmd.Parameters.Add("@Amount", SqlDbType.Float) .Value = float.Parse(AmountTextBox.Text);
cmd.Parameters.Add("@Num" , SqlDbType.Int) .Value =int .Parse( CountTextBox.Text);
cmd.Parameters.Add("@Date" , SqlDbType.NVarChar, 20).Value = DateTextBox.Text;
cmd.Parameters.Add("@Time" , SqlDbType.NVarChar, 20).Value = TimeTextBox.Text;
cmd.Parameters.Add("@R", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
cn.Open();
cmd.ExecuteNonQuery();
if (cmd.Parameters["@R"].Value.ToString() =="1")
{
MessageBox.Show("رکورد مورد نظر ثبت شد.");
RetValue = true;
Close();
}
else
{
MessageBox.Show("ثبت رکورد با موفقیت انجام نشده است");
RetValue = false;
}
cn.Close();

ژیار رحیمی
چهارشنبه 16 دی 1394, 11:11 صبح
سلام.شما در دیتابیس نوع تاریخ(Date) رو از نوع DateTime گرفتی الان در برنامه شما نوع String رو به نوع DateTime انتساب دادی.یا تاریخ (Date) در دیتابیس رو به نوع String تبدیل کن یا در موقع انتساب پارامتر Date از نوع DateTime تبدیل کن

__MAHNAZ__
چهارشنبه 16 دی 1394, 11:16 صبح
اینطور که میفرمایید نیست . در دیتا بیس نوع فیلد Date از نوع nvarchar هستش و اینجا هم با همون نوع فرستا ده شده.

__MAHNAZ__
چهارشنبه 16 دی 1394, 11:21 صبح
این تصویر design همین table مربوط هستش138226

ژیار رحیمی
چهارشنبه 16 دی 1394, 11:32 صبح
دوست گرامی کدProcedure InsertLine در داخل دیتابیس رو بزارید

__MAHNAZ__
چهارشنبه 16 دی 1394, 11:49 صبح
ممنون از اینکه وقت میزارید. 138227

ژیار رحیمی
چهارشنبه 16 دی 1394, 11:58 صبح
دوست گرامی ظاهرا کدها مشکلی نداره ولی فرمت نوشتن Insert رو بصورت زیر بنویس ببین مشکل حل میشه

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

__MAHNAZ__
چهارشنبه 16 دی 1394, 12:11 عصر
138228138229
من procedure رو به شکلی که فرمودید تغییر دادم ولی کماکان برنامه همون Error رو میده.

erfangolbahari
چهارشنبه 16 دی 1394, 12:22 عصر
عزیز شما چرا نوع ارتصال رو به استرینگ کانکشن تغییر نمیدی?

__MAHNAZ__
چهارشنبه 16 دی 1394, 12:24 عصر
متوجه منظورتون نمیشم . میشه بیشتر توضیح بدید.

ژیار رحیمی
چهارشنبه 16 دی 1394, 12:27 عصر
use [TT]--نام دیتابیس خودتون رو بنویس
go
CREATE PROCEDURE InsetLine
@Send nvarchar(50),
@Receive nvarchar(50),
@Type int,
@Amount float,
@Num int,
@Date nvarchar(15),
@Time nvarchar(15)
AS
BEGIN

SET NOCOUNT ON;
Insert into TblCashLine (Sender,Receiver,TypeErsal,Amount,Num,Tarikh,Zaman )
values(@Send,@Receive,@Type,@Amount,@Num,@Date,@Ti me)

END
GO

erfangolbahari
چهارشنبه 16 دی 1394, 12:27 عصر
شما الان دارین از میکرو پروسیجر استفاده میکنید که روش جدید اتصال هستش ولی استرینگ کانکشن نوع قدیمیش هست یه پروژه براتون میزارم از روش بردارین

erfangolbahari
چهارشنبه 16 دی 1394, 12:33 عصر
http://s3.picofile.com/file/8231918134/test_11.rar.html