2013-11-20 2 views
0

Я пытаюсь вставить данные из текстового поля в базу данных sql, но я хочу проверить, не является ли строка пустой, а затем вставить новое значение else обновить строку с помощью значения с sqlcommands в if else condition.Как проверить, является ли значение столбца нулевым, прежде чем вставлять данные из текстового поля

Ниже мой код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 


public partial class CM : System.Web.UI.Page 
{ 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da; 
    SqlCommand cmd; 
    //DataTable dt; 
    SqlConnection con = new SqlConnection("server =consulting76\\SQLEXPRESS; database = msdb; Integrated Security=True"); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     da = new SqlDataAdapter(); 
     //("Select * from NOTESMAKER", con); 
     //da.Fill(ds, "NOTESMAKER"); 
     //dt = ds.Tables["NOTESMAKER"]; 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     con.Open(); 
     if (DBNull.Value != null) 
     { 
      cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values(@text1)",con); 
      cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text; 
      da.InsertCommand = cmd; 
      cmd.ExecuteNonQuery(); 
     } 
     else 
     { 
      cmd = new SqlCommand("Update NOTESMAKER set NOTESMAKER = @text1)",con); 
      cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text; 
      da.UpdateCommand = cmd; 
      cmd.ExecuteNonQuery(); 
     } 
     con.Close(); 
    } 

} 
+1

Не так. Сначала вам нужно получить данные из базы данных. Затем проверьте, является ли он пустым или нет – polin

+0

, в какой строке вы говорите? Текстовое поле или в вашей базе данных – Anand

+0

@Anand - Я говорю о строке в базе данных –

ответ

0

, если вы не знаете, как выпустили запрос на выборку, посмотрите here

выберите * из имя_таблицы где ColumnName не нулевой

заливка SqlDataAdapter из вашего запроса eg

, если счетчик данных равен нулю, тогда вы можете продолжить обновление операции вставки.

if (ds.table[0].rows.count==0)//insert 
     { 

     } 
     else// update 
     } 
+0

Я делаю это: 'protected void Page_Load (отправитель объекта, EventArgs e) { da = new SqlDataAdapter (" Выбрать * из NOTESMAKER, где NOTESMAKER <> NULL ", con) ; da.Fill (ds); // dt = ds.Tables ["NOTESMAKER"]; } ' –

+0

Как проверить, что количество Dataset равно нулю или нет? –

+0

отметьте это как ответ, если он работает для вас. Продолжайте двигаться – Anand

0

Вы можете сделать это таким образом. ExecuteNonQuery() возвращает количество затронутых строк, поэтому, если insert возвращает 0, это означает, что ничего не обновлять. Следовательно, вам нужно вставить строку.

cmd = new SqlCommand("Update NOTESMAKER set NOTESMAKER = @text1)",con); 
cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text; 
int affectedRows = cmd.ExecuteNonQuery(); 

if (affectedRows == 0) 
{ 
    cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values(@text1)",con); 
    cmd.Parameters.Add(new SqlParameter("@text1", SqlDbType.NText)).Value = TextBox1.Text; 
    cmd.ExecuteNonQuery(); 
} 
Смежные вопросы