2015-05-29 87 views
0

關閉我使用Visual Studio 2008中,微軟Server精簡3.5和腳本的Windows Mobile 6.5.3專業寫的。到數據庫的連接之前,數據輸入

我有一個連接到一個數據庫文件,將數據輸入到表單中,當您選擇按鈕,數據應更新或輸入數據寫入數據庫後,小型腳本。

某處在我的劇本我關把數據到數據庫之前的連接。

連接的數據庫連接說成功!當我運行腳本生成器時,我不會收到任何錯誤。關於Windows Mobile模擬器的消息是:「需要的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.design.cs Form1_Load'綁定?在'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); 
     } 
    } 
}