2016-12-05 23 views
2

エラー:エラー - 接続文字列プロパティが初期化されていません(C#データベース)?

The error says:- The ConnectionString Property has not been initialized at system.data.OledbOledConnection.PermissionDemand().

私は、エラーを把握することができません。誰かがそれが何を意味し、どのようにそれを解決するかを説明することができますか?

C#コード:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb;//microsoft database 
namespace AccessLoginApp 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      OleDbConnection connection = new OleDbConnection(); 
      connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\admin\Documents\Book Database.accdb; 
     Persist Security Info=False;"; 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error"+ ex); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     try{ 
     OleDbConnection connection = new OleDbConnection(); 
     connection.Open(); 
     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connection; 
     command.CommandText = " Insert into Book Name(Book Name,Book Number,Publisher) values('" + bookName.Text + "','" + bookNumber.Text + "','" + publisher.Text + "')"; 
     command.ExecuteNonQuery(); 
     MessageBox.Show("Data Saved"); 


     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error" + ex); 
     } 

    } 




} 
} 

答えて

2

形負荷の変数connectionbutton1_ClickイベントがクラスOleDbConnection(明らかに、彼らは異なっている)の別のインスタンスであり、あなたは、接続との接続変数を初期化していません文字列はbutton1_Clickイベント(エラーの原因にもなります)。あなたがコードを実行すれば、はちょうど細かいとなります。連結クエリをParameterizedに置き換えると、クエリはコードが役に立ちますを意味します。 usingステートメントの導入により、コードに完全になります。以下を試すことができます:

string conString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\admin\Documents\Book Database.accdb;Persist Security Info=False;"; 
// This will be the connection string 
private void Form1_Load(object sender, EventArgs e) 
{ 
    // Need not to do anything regarding connection 
    // some other statements if needed 
} 

private void button1_Click(object sender, EventArgs e) 
{ 

    try 
    { 
     using (OleDbConnection connection = new OleDbConnection(conString)) // Create and initialize connection object 
     { 
      connection.Open(); 
      using (OleDbCommand command = new OleDbCommand()) 
      { 
       command.Connection = connection; 
       command.CommandText = " Insert into Book(Book_Name,Book_Number,Publisher) values(@BookName,@BookNumber,@Publisher)"; 
       command.Parameters.Add("@BookName", OleDbType.VarChar).Value = bookName.Text; 
       command.Parameters.Add("@BookNumber", OleDbType.Integer).Value = bookNumber.Text; 
       command.Parameters.Add("@Publisher", OleDbType.VarChar).Value = publisher.Text;      
       command.ExecuteNonQuery(); 

      } 
     } 
     MessageBox.Show("Data Saved"); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error" + ex); 
    } 

} 
+0

識別子が必要です.intはキーワードです。それの使い方? – YoMama

+0

@YoMama:整数に変更してください –

+0

助けてくれてありがとうございますが、それでも私にはエラーが発生しています..Error.System.Data.OledbException(0x80040e14):INSERT INTO文の構文エラーです。 – YoMama

関連する問題