c#将数据添加到firebird数据库

我使用代码将新数据传递给Database(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); 

也许你可以建议更好的算法,或者这是相当不错的?

这种方式没关系,您使用的命令构建器可以完成大量工作,您只需将上面的代码转换为insert命令即可直接在数据库表上执行:

  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(); 

这样你就可以避免命令构建器并将数据加载到Datatable中,应该会更快……

这对数据库来说更轻松:

  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