2015-01-14 2 views
1

Хорошо, поэтому я долгое время работал над этим, но еще не нашел решение. Я надеюсь, вы, люди, сможете мне помочь. У меня есть эта таблица базы данных с именем Кардиология:Вставка значений в выбранную проблему столбца

[CID]     INT   IDENTITY (1, 1) NOT NULL, 
[Name]    NVARCHAR (50) NOT NULL, 
[Designation]   TEXT   NOT NULL, 
[Qualification]  NVARCHAR (50) NULL, 
[Shift]    NVARCHAR (50) NOT NULL, 
[Appointment_Timings] NVARCHAR (50) NOT NULL, 
[Ward_rounds]   NVARCHAR (50) NULL, 
[Slot1]    NVARCHAR (50) NULL, 
[Slot2]    NVARCHAR (50) NULL, 
[Slot3]    NVARCHAR (50) NULL, 
[Slot4]    NVARCHAR (50) NULL, 
[BreakTime]   NVARCHAR (50) NULL, 
[Slot5]    NVARCHAR (50) NULL, 
[Slot6]    NVARCHAR (50) NULL, 
[Slot7]    NVARCHAR (50) NULL, 
[Slot8]    NVARCHAR (50) NULL, 
CONSTRAINT [PK_Cardiology] PRIMARY KEY CLUSTERED ([CID] ASC) 

Я хочу, чтобы ввести данные в несколько столбцов только мой запрос:

string str = "INSERT INTO Cardiology values (@Name,@Designation,@Qualification,@Shift,@Appointment_Timings)"; 
      cmd = new SqlCommand(str, con); 
      cmd.Parameters.AddWithValue("@Name", TextBox1.Text); 
      cmd.Parameters.AddWithValue("@Designation", DropDownList1.Text); 
      cmd.Parameters.AddWithValue("@Qualification", TextBox3.Text); 
      cmd.Parameters.AddWithValue("@Shift", DropDownList2.Text); 
      cmd.Parameters.AddWithValue("@Appointment_Timings", DropDownList3.Text); 
      con.Open(); 
      int flag = cmd.ExecuteNonQuery(); 
      if (flag == 1) //On successful updation, shows a popup message 
      { 
       string msg = "Operation Successful"; 
       System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
       sb.Append("<script type = 'text/javascript'>"); 
       sb.Append("window.onload=function(){"); 
       sb.Append("alert('"); 
       sb.Append(msg); 
       sb.Append("')};"); 
       sb.Append("</script>"); 
       ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString()); 
      } 
      else if (flag == 0) 
      { 
       string msg1 = "Operation Unsuccessful"; 
       System.Text.StringBuilder sb1 = new System.Text.StringBuilder(); 
       sb1.Append("<script type = 'text/javascript'>"); 
       sb1.Append("window.onload=function(){"); 
       sb1.Append("alert('"); 
       sb1.Append(msg1); 
       sb1.Append("')};"); 
       sb1.Append("</script>"); 
       ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb1.ToString()); 
      } 
      show1(); 
      con.Close(); 

show1() выглядит следующим образом:

public void show1() 
    { 
     da = new SqlDataAdapter("SELECT [CID], [Name], [Designation], [Qualification], [Shift], [Appointment_Timings] FROM [Cardiology]", con); 
     da.Fill(ds); 
     GridView1.DataBind(); 
    } 

Я связал DataTable через GridView, так что это не проблема. Я так не думаю. Когда я пытаюсь вставить это то, что сказано:

Название столбца или количество заданных значений не соответствует определению таблицы.

Любая помощь будет принята с благодарностью.

+0

Вам нужно указать столбцы, в которые вы вводите данные, если вы не вставляете значения во все столбцы, например. 'INSERT INTO Cardiology (Columns) ЦЕННОСТИ (ЦЕНЫ)' – Saggio

+0

Получил, спасибо! –

+0

Кроме того, тип TEXT устарел. Вместо этого вы можете использовать nvarchar (max): http://msdn.microsoft.com/en-us/library/ms187993.aspx –

ответ

0

Когда вы опускаете имена столбцов в синтаксисе INSERT INTO, вам необходимо указать значения для всех столбцов не только для их подмножества.

Вы должны изменить INSERT INTO CommandText указать имена столбцов, которые вы хотите получить значение, переданное в ваших параметрах

string str = @"INSERT INTO Cardiology 
       (Name, Designation,Qualification,Shift, Appointment_Timings) 
       values 
       (@Name,@Designation,@Qualification,@Shift,@Appointment_Timings)"; 
+0

wow большое вам спасибо. –

0

Вы должны предоставить имена столбцов, которые вставляются в ,

string str = "INSERT INTO Cardiology (Name, Designation, Qualification, Shift, Appointment_Timings) values (@Name,@Designation,@Qualification,@Shift,@Appointment_Timings)"; 
+0

Получил, спасибо! –

0

Вам нужно указать столбцы, в которые вы вводите данные, если вы не вставляете значения во все столбцы, например. INSERT INTO Cardiology (Columns) VALUES (Значения)

Смежные вопросы