C# 数据存储剪切输入
C# data storing cut the inputs
我有将我的表单输入存储到数据库的功能,但问题是它在存储它们时切断了所有单个字母的输入。
例如: 如果我写 Tom
作为名称它只保存 t
。我表单中的所有输入都会发生这种情况。
Code
try
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MYAPPDatabaseString"].ConnectionString))
{
if (cn.State == ConnectionState.Closed)
cn.Open();
using (SqlCommand cmd = new SqlCommand("dbo.InsertUser", cn))
{
if (nameInput.Text != "" && passwordLableG.Text != "" && usernameLableG.Text != "")
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UserType", typeLAbleG.SelectedItem); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Name", nameInput.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Password", passwordLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@UserName", usernameLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Phone", phoneLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@IdCard", idCardLableG.Text); // <-- only stores first letter of input
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Successfully Saved");
}
}
}
}
catch (SqlException ex)
{
StringBuilder errorMessages = new StringBuilder();
for (int i = 0; i < ex.Errors.Count; i++)
{
errorMessages.Append("Index #" + i + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n");
}
Console.WriteLine(errorMessages.ToString());
}
这是我的Stored Procedure
CREATE PROCEDURE [dbo].[InsertUser]
@Name VARCHAR,
@UserType VARCHAR,
@Password VARCHAR,
@UserName VARCHAR,
@Phone VARCHAR = null,
@IdCard VARCHAR = null
AS
begin
INSERT into Users(Name, UserType, Password, UserName, Phone, IdCard) values (@Name,@UserType,@Password,@UserName, @Phone, @IdCard);
end
这是我的 table schema
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserType] VARCHAR (100) NOT NULL,
[Name] VARCHAR (100) NOT NULL,
[Password] VARCHAR (100) NOT NULL,
[UserName] VARCHAR (100) NOT NULL,
[Phone] VARCHAR (100) NULL,
[IdCard] VARCHAR (100) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有什么想法吗?
您需要调整存储过程变量的长度以匹配 table。
CREATE PROCEDURE [dbo].[InsertUser]
@Name VARCHAR(100),
@UserType VARCHAR(100),
@Password VARCHAR(100),
@UserName VARCHAR(100),
@Phone VARCHAR(100) = null,
@IdCard VARCHAR(100) = null
AS
begin
INSERT into Users(Name, UserType, Password, UserName, Phone, IdCard) values (@Name,@UserType,@Password,@UserName, @Phone, @IdCard);
end
using (SqlCommand cmd = new SqlCommand("dbo.InsertUser", cn))
{
if (nameInput.Text != "" && passwordLableG.Text != "" && usernameLableG.Text != "")
{
cmd.Parameters.Add("@UserType", SqlDbType.VarChar).Value = typeLAbleG.SelectedItem;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = nameInput.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = passwordLableG.Text;
cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = usernameLableG.Text;
cmd.Parameters.Add("@Phone", SqlDbType.VarChar).Value = phoneLableG.Text;
cmd.Parameters.Add("@IdCard", SqlDbType.VarChar).Value = idCardLableG.Tex;
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Successfully Saved");
}
}
我有将我的表单输入存储到数据库的功能,但问题是它在存储它们时切断了所有单个字母的输入。
例如: 如果我写 Tom
作为名称它只保存 t
。我表单中的所有输入都会发生这种情况。
Code
try
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MYAPPDatabaseString"].ConnectionString))
{
if (cn.State == ConnectionState.Closed)
cn.Open();
using (SqlCommand cmd = new SqlCommand("dbo.InsertUser", cn))
{
if (nameInput.Text != "" && passwordLableG.Text != "" && usernameLableG.Text != "")
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UserType", typeLAbleG.SelectedItem); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Name", nameInput.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Password", passwordLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@UserName", usernameLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@Phone", phoneLableG.Text); // <-- only stores first letter of input
cmd.Parameters.AddWithValue("@IdCard", idCardLableG.Text); // <-- only stores first letter of input
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Successfully Saved");
}
}
}
}
catch (SqlException ex)
{
StringBuilder errorMessages = new StringBuilder();
for (int i = 0; i < ex.Errors.Count; i++)
{
errorMessages.Append("Index #" + i + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n");
}
Console.WriteLine(errorMessages.ToString());
}
这是我的Stored Procedure
CREATE PROCEDURE [dbo].[InsertUser]
@Name VARCHAR,
@UserType VARCHAR,
@Password VARCHAR,
@UserName VARCHAR,
@Phone VARCHAR = null,
@IdCard VARCHAR = null
AS
begin
INSERT into Users(Name, UserType, Password, UserName, Phone, IdCard) values (@Name,@UserType,@Password,@UserName, @Phone, @IdCard);
end
这是我的 table schema
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserType] VARCHAR (100) NOT NULL,
[Name] VARCHAR (100) NOT NULL,
[Password] VARCHAR (100) NOT NULL,
[UserName] VARCHAR (100) NOT NULL,
[Phone] VARCHAR (100) NULL,
[IdCard] VARCHAR (100) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有什么想法吗?
您需要调整存储过程变量的长度以匹配 table。
CREATE PROCEDURE [dbo].[InsertUser]
@Name VARCHAR(100),
@UserType VARCHAR(100),
@Password VARCHAR(100),
@UserName VARCHAR(100),
@Phone VARCHAR(100) = null,
@IdCard VARCHAR(100) = null
AS
begin
INSERT into Users(Name, UserType, Password, UserName, Phone, IdCard) values (@Name,@UserType,@Password,@UserName, @Phone, @IdCard);
end
using (SqlCommand cmd = new SqlCommand("dbo.InsertUser", cn))
{
if (nameInput.Text != "" && passwordLableG.Text != "" && usernameLableG.Text != "")
{
cmd.Parameters.Add("@UserType", SqlDbType.VarChar).Value = typeLAbleG.SelectedItem;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = nameInput.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = passwordLableG.Text;
cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = usernameLableG.Text;
cmd.Parameters.Add("@Phone", SqlDbType.VarChar).Value = phoneLableG.Text;
cmd.Parameters.Add("@IdCard", SqlDbType.VarChar).Value = idCardLableG.Tex;
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Successfully Saved");
}
}