2012-05-03 263 views
0

有,我用新的數據傳遞到數據庫的代碼(火鳥):C#數據添加到Firebird數據庫

FbConnection fbCon = new FbConnection(csb.ToString()); 
FbDataAdapter fbDAdapter = new FbDataAdapter("SELECT ID,name,score FROM players",fbCon); 
FbCommandBuilder Cmd = new FbCommandBuilder(fbDAdapter); 
DataSet DSet = new DataSet(); 
fbDAdapter.Fill(DSet); 
DataRow rw = DSet.Tables[0].NewRow(); 
rw["ID"] = zID + 1; 
rw["name"] = var; 
rw["score"] = score; 
DSet.Tables[0].Rows.Add(rw); 
fbDAdapter.Update(DSet); 

或許您可以推薦更好的算法,或者這是相當不錯的?

回答

2

這樣就OK了,您使用的命令生成器,對於做了很多的工作,你可以簡單地翻譯上面的代碼爲插入命令直接對數據庫表來執行:

FbConnection fbCon = new FbConnection(csb.ToString()); 
    FbCommand fbCom = new FbCommand("INSERT INTO players(ID,name,score) VALUES (@id,@name,@score)", fbCon); 
    fbCom.Parameters.AddWithValue("id", zID + 1); 
    fbCom.Parameters.AddWithValue("name", var); 
    fbCom.Parameters.AddWithValue("score", score); 
    fbCom.ExecuteNonQuery(); 

在這樣你就可以避免命令生成器和數據加載到數據表,應該是相當快......

+0

好吧,addisional問題,女巫方法更好地使用,如果我想檢查數據庫中是否已經存在數據庫? 在我的例子中,我知道如何做到這一點。 如何檢查你的存在? – Bublik

0

這是打火機數據庫:

 FbConnectionStringBuilder csb = new FbConnectionStringBuilder(); 
     csb.ServerType = FbServerType.Default; 
     csb.Database = Settings.Default.LastBDPath; 
     csb.Password = Settings.Default.LastBDPassword; //   "masterkey"; 
     csb.UserID = Settings.Default.LastBDUser;  //   "SYSDBA"; 
     connection = new FbConnection(csb.ToString()); 

     connection.Open(); 

     string scriptLine = string.Format("INSERT INTO TABLE (Id, Name, Score) values ({0}, '{1}', {2}", zId+1, var, score) ; 
     FBCommand command = new FbCommand(scriptline, connection); 
     command.ExecuteNonQuery(); 

對於一個選擇:

string sql = string.Format("select * from table where name='{0}';", your_name); 

FbCommand command = new FbCommand(sql), connection); 
FbDataReader reader = command.ExecuteReader(); 
while (reader.Read()) 
{ 
    for (int i=0; i<reader.FieldCount; i++) 
    { 
     objects[i].Add(reader.GetValue(i)); 
    } 
} 
+0

哦,thnx,是否有任何方法來檢查數據庫中是否存在值,例如名稱? – Bublik

+0

當然,你應該使用sql select,如果讀者返回它存在的行 – Blau