2016-12-27 73 views
-1

我使用ADO.NET 2.0駕駛員Embracadero和試圖連接到遠程Interbase的基座(http://cc.embarcadero.com/item/25497)。我試圖插入查詢到我的數據庫,但是當我插入查詢時,它會拋出「對象引用未設置爲對象的實例。」有人有同樣的問題嗎?ADO.NET 2.0驅動拋出異常上CreateCommand()

我有:

public DbConnection GetConnection() 
    { 
     DbConnection con = new TAdoDbxConnection(); 
     con.ConnectionString = _connectionString; 

     return con; 
    } 

然後我做的:

 using (var conn = GetConnection()) 
     { 
      using (var cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = query; 

       var param = cmd.CreateParameter();// <---- here exception is thrown 
       NazwaChannel.ParameterName = "@param"; 
       NazwaChannel.Value = 1000; 
       NazwaChannel.DbType = DbType.Int32; 

       cmd.Parameters.Add(param); 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       conn.Close(); 

      } 
     } 

查詢是像「插入到表(TABLEID,COLUMNNAME)值(GEN_ID(GenaratorName,1),@參數) 」。

+1

那麼首先,我們需要一些代碼,能夠幫助您。另外,如果你有一個NullPointerException,讀[這](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it)。 – RandomStranger

+0

只是一個建議。獲取查詢變量的值並嘗試直接插入數據庫以查看問題是否在查詢中。否則,我沒有看到你的代碼有什麼問題。 –

+0

Bas,它不是nullpointexception – Anton

回答

1

答案是:

  • 參數創建之前使用conn.Open()
  • 代替「INSERT INTO TABLENAME(列1,列2,...)VALUES(@值1,@值2,。 ..)'use'INSERT INTO TABLENAME(column1,column2,...)VALUES(?,?,...)'。