【问题标题】:string input error while inserting data c# (INPUT STRING WAS NOT CORRECTLY FORMATTED ERROR)插入数据时字符串输入错误c#(输入字符串格式不正确)
【发布时间】:2017-04-01 08:35:52
【问题描述】:

enter image description hereenter image description here我面临一个问题,我已经发布了存储过程、c# 代码以及在将数据插入数据库时​​发生的错误。我需要一个解决方案

 string dataString = @"Data Source=DESKTOP-E5V2JHG;Initial catalog=hospital_management;Integrated Security=SSPI";
          SqlConnection connect = new SqlConnection(dataString);


          connect.Open();



          SqlCommand cmd = new SqlCommand("Add_doctor", connect);
          cmd.CommandType = CommandType.StoredProcedure;

          cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = textBox1.Text;
          cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = textBox2.Text;
          cmd.Parameters.Add("@ContactNo", SqlDbType.Decimal).Value = Convert.ToDecimal(textBox3.Text);
          cmd.Parameters.Add("@EmailId", SqlDbType.VarChar).Value = textBox4.Text;
          cmd.Parameters.Add("@GenderId", SqlDbType.Int).Value = Convert.ToInt32(comboBox1.SelectedText);
          cmd.Parameters.Add("@Nationality", SqlDbType.VarChar).Value = textBox5.Text;
          cmd.Parameters.Add("@salary", SqlDbType.Int).Value = Convert.ToInt32(textBox7.Text);
          cmd.Parameters.Add("@DOB", SqlDbType.DateTime2).Value = dateTimePicker1;
          cmd.Parameters.Add("@shiftId", SqlDbType.Int).Value = Convert.ToInt32(comboBox3.SelectedText);
          cmd.Parameters.Add("@qualification", SqlDbType.VarChar).Value = textBox9.Text;
          cmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = textBox10.Text;
          cmd.Parameters.Add("@HireDate", SqlDbType.DateTime2).Value = dateTimePicker2;
          cmd.Parameters.Add("@Pass", SqlDbType.VarChar).Value = textBox8.Text;
          cmd.Parameters.Add("@Religion", SqlDbType.VarChar).Value = textBox6.Text;
          cmd.Parameters.Add("@specId", SqlDbType.Int).Value = Convert.ToInt32(comboBox2.SelectedText);

          cmd.ExecuteNonQuery();
          MessageBox.Show("Command Executed");
          connect.Close();

这是在c#中

Create Proc AddDoctor
@EMPtypeID VARCHAR(50),
@FirstName VARCHAR(50),
@LastName VARCHAR(50),
@ContactNo INT,
@EmailId VARCHAR(50),
@GenderId INT,
@Nationality VARCHAR(50),
@salary INT,
@DOB DATETIME2,
@shiftID INT,
@qualification VARCHAR(50),
@Address VARCHAR(50),
@HireDate DATETIME2,
@Pass VARCHAR(50),    
@Religion VARCHAR(50),
@specId INT
AS
BeGIN


insert into EMPLOYEES (_EMPtypeID,_FirstName,_LastName,_ContactNo,_EmailId,
_GenderId,_Nationality,_salary,_DOB,_ShiftId,_qualification,
_Address,_HireDate,_Password,_Religion,_specialityId)

values (@EMPtypeID,@FirstName,@LastName,@ContactNo,@EmailId, 
@GenderId,@Nationality,@salary,@DOB,@shiftID,@qualification,
@Address,@HireDate,@Pass,@Religion,@specId);

END

这是数据库中的存储过程

【问题讨论】:

  • 但是错误在哪里?
  • 您是否可能需要执行 ALTER 而不是 CREATE?发布带有下划线单词的代码图片并不能真正指出具体问题。
  • HireDate 或 DOB 的字符串可能是 SQL 无法识别的格式
  • 那么它的正确数据类型应该是什么?

标签: c# sql sql-server stored-procedures


【解决方案1】:

在您的DOBHireDate 中存在问题。
改变这个

cmd.Parameters.Add("@DOB", SqlDbType.DateTime2).Value = dateTimePicker1;
cmd.Parameters.Add("@HireDate", SqlDbType.DateTime2).Value = dateTimePicker2;

到这里

cmd.Parameters.Add("@DOB", SqlDbType.DateTime2).Value = dateTimePicker1.Text.ToString();
cmd.Parameters.Add("@HireDate", SqlDbType.DateTime2).Value = dateTimePicker2.Text.ToString();

因为在那个 2 表中没有输入接收,就像日期的抽象数字一样。所以你需要把它变成一个具体的字符串。对你有好处SQL Server可以接受string格式的date,如果它是yyyy-mm-dd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多