插入后,仅插入一个字符的"string".在数据库中 [英] After inserting, only one character is inserted of "string" in database
本文介绍了插入后,仅插入一个字符的"string".在数据库中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是我的表格屏幕截图:
Below is my table screenshot:
插入后的数据
C#中的代码
SqlConnection con = new SqlConnection(connectionsession.Con);
con.Open();
SqlCommand cmd = new SqlCommand("finalinsert", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@fid", SqlDbType.Int)).Value = flightsession.Sflightid;
cmd.Parameters.Add(new SqlParameter("@fcid", SqlDbType.Int)).Value = flightsession.Sflightcostid;
cmd.Parameters.Add(new SqlParameter("@ftid", SqlDbType.Int)).Value = flightsession.Sflighttimingid;
cmd.Parameters.Add(new SqlParameter("@frdn", SqlDbType.Date)).Value = DateTime.Now.ToString("dd-MM-yyyy");
cmd.Parameters.Add(new SqlParameter("@ford", SqlDbType.Date)).Value = flightsession.Regdate;
cmd.Parameters.Add(new SqlParameter("@uid", SqlDbType.Int)).Value = loginsession.Auser;
cmd.Parameters.Add(new SqlParameter("@paid", SqlDbType.Int)).Value = "1";
cmd.Parameters.Add(new SqlParameter("@source", SqlDbType.VarChar)).Value = flightsession.Sscource;
cmd.Parameters.Add(new SqlParameter("@destination", SqlDbType.VarChar)).Value = flightsession.Sdestination;
cmd.Parameters.Add(new SqlParameter("@fn", SqlDbType.VarChar)).Value = flightsession.Sflightname;
cmd.Parameters.Add(new SqlParameter("@fc", SqlDbType.VarChar)).Value = flightsession.Total;
cmd.Parameters.Add(new SqlParameter("@fty", SqlDbType.VarChar)).Value = flightsession.Stype;
cmd.Parameters.Add(new SqlParameter("@fcl", SqlDbType.VarChar)).Value = flightsession.Sflightclass;
cmd.Parameters.Add(new SqlParameter("@ft", SqlDbType.Time)).Value =flightsession.Sflighttime;
cmd.ExecuteNonQuery();
MessageBox.Show("Succesful");
con.Close();
flightreceipt ob18 = new flightreceipt();
ob18.ShowDialog();
this.Hide();
在SQL Server 2008中创建过程的代码
Code for creating procedure in SQL server 2008
ALTER procedure [dbo].[finalinsert] @fid int,@fcid int,@ftid int,@frdn date,@ford date,@uid int,
@paid int,@source varchar,@destination varchar,@fc varchar,@fty varchar,@fcl varchar,@ft time(7) ,@fn varchar
AS
INSERT INTO [shangrila].[dbo].[flight_reg_table]
([flight_id]
,[flight_cost_id]
,[flight_time_id]
,[flight_reg_date_now]
,[flight_on_reg_date]
,[user_id]
,[paid]
,[source]
,[destination]
,[flight_name]
,[flight_cost]
,[flight_type]
,[flight_class]
,[flight_time])
VALUES
(@fid,
@fcid,
@ftid,
@frdn,
@ford,
@uid,
@paid,
@source,
@destination,
@fn,
@fc,
@fty,
@fcl,
@ft)
我试图找出原因!但是我被困住了.记住我要插入的所有格式都是字符串.谢谢.
I tried to figure out why! But i am stuck. Remember all format which I am inserting is string. Thanks.
推荐答案
在您的存储过程中,您的VARCHAR必须具有与其关联的长度,例如 VARCHAR(50)
.默认长度为1,因此SQL仅向您的存储过程发送一个字符.
In your sproc your VARCHAR needs to have a length associated with it, such as VARCHAR(50)
. The default length is 1, so SQL is only sending one character to your sproc.
ALTER procedure [dbo].[finalinsert]
@fid int
,@fcid int
,@ftid int
,@frdn date
,@ford date
,@uid int
,@paid int
,@source varchar(50)
,@destination varchar(50)
,@fc varchar(50)
,@fty varchar(50)
,@fcl varchar(50)
,@ft time(7)
,@fn varchar(50)
AS
您可能还需要在调用中更改数据类型以包括长度,但是ADO.NET 可能可以正确处理它.
You may also need to change the datatype in your call as well to include the length, but ADO.NET might handle it correctly.
这篇关于插入后,仅插入一个字符的"string".在数据库中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文