2014-01-16 2 views
0

Я хочу вставить данные в базу данных SQL Server с помощью C#.Я хочу вставить данные в базу данных SQL Server с помощью C#

В моем коде не найдено ошибок. Но после ввода данных я пересекаю. Он показывает мне данные. Но когда я открываю таблицу базы данных. Я не вижу вставленные данные. Я инициализирую таблицу во время создания двумя строками. Но когда я пересекаю форму, я не вижу этих строк.

После стольких пробных ошибок. Я вижу, что соединение с базой данных ломается всякий раз, когда я запускаю его. Я увидел, что после нажатия F5 «зеленый плагин» на значке базы данных перешел на «красный крест». Это причина? Если это то, что должно быть решением?

Ребята, пожалуйста, помогите мне. Я новичок в C#.

Это insert.cs:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace employeDB1 
{ 
public partial class Insert : Form 
{ 
    public Insert() 
    { 
     InitializeComponent(); 
    } 

    DatabaseConnection objConnect; 
    string conString; 
    int inc ; 
    int MaxRows; 
    DataSet ds = new DataSet(); 
    DataRow dRow; 

    public void Insert_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      objConnect = new DatabaseConnection(); 
      conString = Properties.Settings.Default.EmployeeConnectionString; 
      objConnect.connection_string = conString; 
      objConnect.Sql = Properties.Settings.Default.SQL; 
      ds = objConnect.GetConnection; 
      MaxRows = ds.Tables[0].Rows.Count; 
      inc = MaxRows - 1; 
      //NavigateRecords(); 
     } 
     catch (Exception err) 
     { 
      MessageBox.Show(err.Message); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
      DataRow row = ds.Tables[0].NewRow(); 
      row[0] = int.Parse(textBox1.Text); 
      row[1] = textBox2.Text; 
      row[2] = textBox3.Text; 
      row[3] = int.Parse(textBox4.Text); 
      ds.Tables[0].Rows.Add(row); 
     try 
     { 

      objConnect.UpdateDatabase(ds); 
      MaxRows = MaxRows + 1; 
      inc = MaxRows - 1; 
      MessageBox.Show("RECORD INSERTED"); 

     } 
     catch(Exception err) 
     { 
      MessageBox.Show(err.Message); 
     } 
    } 

    private void NavigateRecords() 
    { 
     dRow = ds.Tables[0].Rows[inc]; 
     textBox1.Text = dRow.ItemArray.GetValue(0).ToString(); 
     textBox2.Text = dRow.ItemArray.GetValue(1).ToString(); 
     textBox3.Text = dRow.ItemArray.GetValue(2).ToString(); 
     textBox4.Text = dRow.ItemArray.GetValue(3).ToString(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     if (inc>0) 
     { 
      inc--; 
      NavigateRecords(); 

     } 
     else 
     { 
      MessageBox.Show("First Record"); 
     } 
    } 
} 
} 

Это класс подключения к базе данных:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace employeDB1 
{ 
class DatabaseConnection 
{ 
    private string sql_string; 
    private string strCon; 
    System.Data.SqlClient.SqlDataAdapter da_1; 

    public string Sql 
    { 
     set { sql_string = value; } 
    } 

    public string connection_string 
    { 
     set { strCon = value; } 
    } 

    public System.Data.DataSet GetConnection 
    { 
     get { return MyDataSet(); } 
    } 

    private System.Data.DataSet MyDataSet() 
    { 
     System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon); 
     con.Open(); 
     da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con); 
     System.Data.DataSet dat_set = new System.Data.DataSet(); 
     da_1.Fill(dat_set, "Table_Data_1"); 
     con.Close(); 
     return dat_set; 
    } 

    public void UpdateDatabase(System.Data.DataSet ds) 
    { 
     System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1); 
     cb.DataAdapter.Update(ds.Tables[0]); 
    } 
} 
+1

Оберните C# в Try/поймать блока и проверить исключение. Это должно дать вам больше информации. – Seano666

+0

Скорее всего, вы смотрите не в том месте или в неподходящее время для данных. Предполагается, что вы вызываете «Обновить» на адаптере данных или ExecuteNonQuery в команде для изменения базы данных. В этом случае возможны три варианта: изменения сохраняются, и метод возвращает ненулевое значение, никаких изменений не сохраняют, а метод возвращает ноль или генерируется исключение. Вы говорите, что ошибок нет, поэтому он должен быть одним из первых двух. Что он? Кроме того, вы подключаетесь к базе данных на сервере или локальному файлу данных? Я предполагаю, что это последнее. – jmcilhinney

+0

, пожалуйста, напишите свой код доступа к данным –

ответ

0

попытка поставить строку подключения в файле app.config, а затем восстановить его, или вы можете жесткий код это в файле insert.cs. Я проверил его, используя файл app.config, и он работал. Вот что я сделал.

файл app.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings> 
    <add name="connectionString" connectionString="Server=192.168.8.295;Database=TestDB; 
      uid=Tapan;pwd=kumar;"/> 
    </connectionStrings> 
</configuration> 

Тогда просто заменить вещь вы retriving от настроек в вашей insert.cs странице

conString = ConfigurationManager.ConnectionStrings["connectionString"].ToString(); 

И удалить эту вещь

objConnect.Sql = Properties.Settings.Default.SQL; 

An d проверить один раз, если он работает или нет. Для меня это работало.

Тем не менее, если у вас есть проблемы, то сначала поместить попытаться поймать в вашем коде и отладки полностью первый и увидеть, где ваш код умирает ..

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