c# - C# 数据存储切割输入
问题描述
我有将表单输入存储到数据库的功能,但问题是它在存储它们时会切断所有输入到单个字母。
例如:如果我写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)
);
任何的想法?
解决方案
您将需要调整存储过程变量长度以与表匹配。
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");
}
}
推荐阅读
- java - 索引 0 超出了 university_info.UniversityDriver.main(UniversityDriver.java:39) 中长度 0 的范围
- asp.net-core - ASPNET CORE:首次启动时数据保护需要 3 分钟以上
- javascript - 在 WordPress 中,如何按下按钮并将所有当前访问者重定向到另一个页面?
- python - 如何处理javascript以在python中进行抓取?
- visual-studio-code - 是否可以在我现有工作区的文件资源管理器中打开文件?
- sql - 一张表可以有许多其他表的外键吗?
- android - Slack 如何通过推送通知创建电话铃声?(iOS,安卓)
- python - docker.from_env() return FileNotFoundError: [Errno 2] No such file or directory
- python - 在python中查看pickle文件中的图像
- javascript - 检测卷轴