2015-05-29 5 views
0

Я использую Visual Studio 2008 с Microsoft Server Compact 3.5, а сценарий написан для Windows Mobile 6.5.3 Professional.Подключение к базе данных Закрыто перед вводом данных

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

Где-то в моем сценарии я закрываю соединение перед тем, как поместить данные в базу данных.

Соединение в базе данных говорит о связи успеха! И когда я запускаю скриптовый конструктор, я не получаю никаких ошибок. Сообщение на мобильном эмуляторе Windows: «ExecuteNonQuery требует открытого и доступного соединения. Текущее состояние соединения закрыто».

Как вы можете видеть, я новичок в Visual Studio.

Вот форма сценария:

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

namespace testdbconnection 
{ 
public partial class Form1 : Form 
{ 
    public SqlCeConnection cn = new SqlCeConnection(@"Data Source = C:\Users\...\test.sdf"); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      cn.Open(); 
     } 
     catch (SqlCeException ex) 
     { 
      MessageBox.Show(ex.Message); 
      Application.Exit(); 
     } 
    } 

    private void TextBoxes_TextChanged(object sender, EventArgs e) 
    { 
     if (textBox1.Text != "" && textBox2.Text != "") 
     { 
      button1.Enabled = true; 
     } 
     else 
     { 
      button1.Enabled = false; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     SqlCeCommand cm = new SqlCeCommand("INSERT INTO tblUsers(userName, age) VALUES (@userName, @age)", cn); 
     cm.Parameters.AddWithValue("@userName", textBox1.Text); 
     cm.Parameters.AddWithValue("@age", textBox2.Text); 

     try 
     { 
      int affectedRows = cm.ExecuteNonQuery(); 

      if (affectedRows > 0) 
      { 
       MessageBox.Show("Insert success!"); 
       textBox1.Text = ""; 
       textBox2.Text = ""; 
      } 
      else 
      { 
       MessageBox.Show("Insert failed!"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

} 

}

+0

ли Form1_Load' переплетены 'в Form1.design.cs? Установите контрольную точку в строке 'cn.Open();'. –

ответ

0
private void button1_Click(object sender, EventArgs e) 
    { 
using (cn) 
{ 

     SqlCeCommand cm = new SqlCeCommand("INSERT INTO tblUsers(userName, age) VALUES (@userName, @age)", cn); 
     cm.Parameters.AddWithValue("@userName", textBox1.Text); 
     cm.Parameters.AddWithValue("@age", textBox2.Text); 

     try 
     { 
cn.open(); 
      int affectedRows = cm.ExecuteNonQuery(); 

      if (affectedRows > 0) 
      { 
       MessageBox.Show("Insert success!"); 
       textBox1.Text = ""; 
       textBox2.Text = ""; 
      } 
      else 
      { 
       MessageBox.Show("Insert failed!"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
} 

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

  • Нет связанных вопросов^_^